1

调用将对象添加到 GWT 中的集合的方法时,出现空指针错误。我不知道为什么我所做的一切都创建了一个非常简单的对象(仅包含一个字符串)。下面是调用函数和函数的代码:

public class PlantMenu extends VerticalPanel {

    private Collection<PlantData> plantList;
    private Collection<PlantData> newPlantData;

    public PlantMenu() {
        createPlants();
        /*
        for(Iterator<PlantData> i = plantList.iterator(); i.hasNext();) {
            Window.alert(i.next().getPlantName());
        }*/
    }

    public Collection<PlantData> createPlants() {
        PlantData plant1 = new PlantData("Herbs");
        PlantData plant2 = new PlantData("Flowers");
        PlantData plant3 = new PlantData("Vegetable");

        newPlantData.add(plant1);
        newPlantData.add(plant2);
        newPlantData.add(plant3);
        return newPlantData;
    }

}

尝试添加第一个植物时,它会出错(空指针),这一行:

PlantData plant1 = new PlantData("Herbs");

任何帮助表示赞赏:)

4

2 回答 2

5

你没有初始化你的集合。尽管如此,你已经告诉过它不在那条线上,但我对此表示怀疑。不过,显示完整的异常堆栈会更有帮助。并且异常可能发生在您的 PlantData 构造函数中,但您没有在此处显示。

你可以做这样的事情,

private Collection<PlantData> plantList = new ArrayList<PlantData>();
private Collection<PlantData> newPlantData = new ArrayList<PlantData>();

我用过ArrayList,因为一般我们用ArrayList。根据需要,也可以使用其他实现方式。

于 2009-02-25T03:29:26.550 回答
0

您没有正确初始化变量,这与 GWT 无关,只是基本的 Java。这是一个工作版本:

public class PlantMenu extends VerticalPanel {

    private List<PlantData> plantList = new ArrayList<PlantData>();
    private List<PlantData> newPlantData = new ArrayList<PlantData>();

    public PlantMenu() {
        createPlants();
        for(PlantData plant : newPlantData) {
                Window.alert(plant.getPlantName());
        }
    }

    public List<PlantData> createPlants() {
        newPlantData.add(new PlantData("Herbs"));
        newPlantData.add(new PlantData("Flowers"));
        newPlantData.add(new PlantData("Vegetable"));
        return newPlantData;
    }

}

作为旁注,您不应该扩展 VerticalPanel,而是扩展 Composite,然后使用垂直面板作为您的小部件,使用 setWidget(...);

于 2009-02-25T05:48:53.483 回答