2010-06-19 3 views
1

나는 인터페이스있어 자바 :인터페이스 문제

package com.aex; 

import javax.jws.WebParam; 

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

그리고 클래스 :

/* 
* 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; 
    } 

} 

지금 내가 그렇게 여기 내 인하는 웹 서비스와 인터페이스의 수집을 통해 보낼를 클래스는 내가 보내

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; 
    } 

} 

문제는 내가 마지막으로 표시된 클래스 (AEX) 생성자에 NullPointerException이 얻을 수 있다는 것입니다. 인터페이스 컬렉션에 개체를 추가하려고하기 때문입니다. 누구든지 이것에 대한 해결책을 얻었습니까?

답변

5

예 : 컬렉션 변수를 초기화하십시오! 이 실제로 당신이 명시 적으로, 어떤 문맥을 초기화하지 않는 null로 인터페이스 나 웹 서비스 ... 참조 유형 필드의 디폴트와는 아무 상관이 없다는 것을

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

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

참고.

+0

롤, 그래서 나 바보. 감사합니다 =) – Julian