我可以将对象(成分)分配给主类中的数组,如下所示:


Ingredient[] ingredient = new Ingredient[5];
Ingredient potato = new Ingredient("Potatoes");
ingredient[0] = potato;


但是我真正想做的是将数组放在另一个对象(食物)中,所以我可以这样访问它:


fries.ingredient[0] = potato;


这样每种食物都有自己的成分集合。但是,我尝试过的所有操作都导致“ NullPointerException”或“找不到符号”。我该如何解决?

编辑:
很抱歉花了一段时间。我不知道如何在blockquotes中缩进,但是可以。这是我的(失败的)尝试,导致NullPointerException。

Main.java:


public class Main {
public static void main (String[] args) {
Ingredient potato = new Ingredient("Potatoes");
Food fries = new Food("Fries");
fries.ingredient[0] = potato;
} }


Food.java:


public class Food {
Ingredient[] ingredient;
String name;
public Food(String name) {
this.name = name;
Ingredient[] ingredient = new Ingredient[5];
} }


成分.java


public class Ingredient {
String name;
public Ingredient(String name) {
this.name = name;
} }

最佳答案

在构造函数中,您需要:

Ingredient[] ingredient = new Ingredient[5];


您已经声明了一个名为ingredient的局部变量,该变量隐藏了您的同名实例变量。将该行更改为

this.ingredient = new Ingredient[5];




作为学习的下一步,请考虑使用List<Ingredient>而不是数组。数组是不可调整大小的,还有其他不便之处。基本上,它们的主要用途是在实现的内部,而不是客户端代码。

关于java - 包含对象数组的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20729459/

10-09 10:13