Проблема с интерфейсом Java - PullRequest
1 голос
/ 19 июня 2010

У меня есть интерфейс:

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). Это потому, что я хочу добавить объект в коллекцию интерфейсов. Кто-нибудь получил решение для этого?

1 Ответ

5 голосов
/ 19 июня 2010

Да: инициализировать переменную вашей коллекции!

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

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

Обратите внимание, что это на самом деле не имеет ничего общего с интерфейсами или веб-службами ... поля ссылочного типа по умолчанию имеют значение null, если вы явно не инициализируете их, независимо от контекста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...