我可以将对象(成分)分配给主类中的数组,如下所示:
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/