2010-06-19 7 views
1

J'ai une interface:interface Java Problème

package com.aex; 

import javax.jws.WebParam; 

public interface IFonds { 
    double getKoers(); 
    String getNaam(); 
    void setKoers(@WebParam(name="koers") double koers); } 

Et la classe:

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 

package com.aex; 

import java.io.Serializable; 
import javax.jws.*; 

/** 
* 
* @author Julian 
*/ 
@WebService 
public class Fonds implements IFonds, Serializable { 

    String naam; 
    double koers; 

    public double getKoers() { 
     return koers; 
    } 

    public String getNaam() { 
     return naam; 
    } 

public Fonds() 
{ 
} 

    public Fonds(String naam, double koers) 
    { 
     this.naam = naam; 
     this.koers = koers; 

    } 

    public void setKoers(@WebParam(name="koers")double koers) { 
     this.koers = koers; 
    } 

} 

Maintenant, je veux envoyer plus d'une collection de l'interface avec un webservice, donc voici mon classe I envoyer:

package com.aex; 

import java.util.Collection; 
import java.util.*; 
import javax.jws.*; 

/** 
* 
* @author Julian 
*/ 
@WebService 
public class AEX implements IAEX { 

    Collection<IFonds> fondsen; 

    public Collection<IFonds> getFondsen() { 
     return fondsen; 
    } 


    public AEX() 
    { 
     IFonds fonds1 = new Fonds("hema", 3.33); 


     //fondsen.add(fonds1); 
    } 

    public double getKoers(@WebParam(name="fondsnaam")String fondsNaam){ 

     Iterator iterator = fondsen.iterator(); 

     while(iterator.hasNext()) 
     { 
      Fonds tempFonds = (Fonds)iterator.next(); 
      if(tempFonds.getNaam().endsWith(fondsNaam)) 
      { 
       return tempFonds.getKoers(); 
      } 

     } 
     return -1; 
    } 

} 

le problème est que je reçois un NullPointerException dans le constructeur de la dernière classe montré (AEX). C'est parce que je veux ajouter l'objet dans la collection d'interface. Quelqu'un a-t-il trouvé une solution pour cela?

Répondre

5

Oui: initialisez votre variable de collection!

public AEX() 
{ 
    IFonds fonds1 = new Fonds("hema", 3.33); 

    // This is the line you were missing 
    fondsen = new ArrayList<IFonds>(); 
    fondsen.add(fonds1); 
} 

Notez que cela n'a en fait rien à voir avec les interfaces ou services web ... champs de type référence par défaut null sauf si vous les initialiser explicitement, quel que soit le contexte.

+0

Lol, tellement stupide de ma part. Merci =) – Julian