Java从静态类外部创建类内的类数组
我想创建一个类的实例,其中包含一个类成员数组,数组在初始化时定义长度。我编写的代码不包含任何预编译错误,但在运行后返回nullPointerException。我想通过键入storeA.products[productnumber].product变量来访问storeA类的产品,这可能吗Java从静态类外部创建类内的类数组,java,arrays,class,Java,Arrays,Class,我想创建一个类的实例,其中包含一个类成员数组,数组在初始化时定义长度。我编写的代码不包含任何预编译错误,但在运行后返回nullPointerException。我想通过键入storeA.products[productnumber].product变量来访问storeA类的产品,这可能吗 package tinc2; public class FirstProgram { public static void main(String[] args) { store s
package tinc2;
public class FirstProgram {
public static void main(String[] args) {
store storeA = new store();
storeA.name = "Walmart";
storeA.products = new store.product[3];
storeA.products[0].name = "Horses";
System.out.println(storeA.products[0].name);
}
public static class store{
String name;
product products[];
static class product{
String name;
int quantity;
double price;
}
}
}
追求
相反
此外,您应该将这些类放在单独的文件中。
您应该遵循Java中的命名约定,例如Store而不是Store。
您应该使用getter和setter
如果可能的话,我会避免使用静态。您不应该实例化静态类。您的产品类不应定义为静态的。我建议:
package tinc2;
public class FirstProgram {
public static void main(String[] args) {
Store.name = "Walmart";
Store.products = new Product[1];
Store.products[0] = new Product();
Store.products[0].name = "Horses";
System.out.println(Store.products[0].name);
}
public static class Store{
String name;
Product products[];
}
public class Product{
String name;
int quantity;
double price;
}
}
这意味着我只有一家店,这只是一个样品。可以根据需要调整数组的大小。或者,您可以使用一个具有灵活大小的数据结构,如链表。我正试图使它更像一种数据类型,它包含一个产品数组,可以在任何时候、任何数量地初始化。确实如此。您认为产品类定义必须是商店的内部类才能起作用吗?事实并非如此。我建议您单独定义产品。您建议不要进行推理。这是我尝试的第一个语法,nullPointerException。不,它被修改了;似乎每个单独的产品作为数组的一部分都需要单独声明才能使用,而这正是我所缺少的。我将这两行代码添加到您的代码中,现在它正按照需要工作,谢谢。forint i=0;我
package tinc2;
public class FirstProgram {
public static void main(String[] args) {
Store.name = "Walmart";
Store.products = new Product[1];
Store.products[0] = new Product();
Store.products[0].name = "Horses";
System.out.println(Store.products[0].name);
}
public static class Store{
String name;
Product products[];
}
public class Product{
String name;
int quantity;
double price;
}
}