Java从静态类外部创建类内的类数组

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

我想创建一个类的实例,其中包含一个类成员数组,数组在初始化时定义长度。我编写的代码不包含任何预编译错误,但在运行后返回nullPointerException。我想通过键入storeA.products[productnumber].product变量来访问storeA类的产品,这可能吗

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;
    }
}