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

时间:2017-01-27 20:21:46

标签: java arrays class

我想创建一个类的实例,其中包含一个类成员数组,其中数组在初始化时定义为长度。我编写的代码不包含任何预编译错误,但在运行后返回nullPointerException。我希望能够通过输入storeA.products [productnumber]来获取类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;
        }
    }

}

2 个答案:

答案 0 :(得分:1)

转到

public static void main(String[] args) {
    store storeA = new store();
    storeA.name = "Walmart";
    storeA.products = new store.product[3];
    storeA.products[0] = new store.product();
    storeA.products[0].name = "Horses";
    System.out.println(storeA.products[0].name);
}

代替。

此外,您应将这些类放在单独的文件中。 您应该遵循Java中的命名约定,例如Store代替store。 你应该使用getter和setter。

如果可能,我会避免使用static

答案 1 :(得分:0)

您不应该实例化静态类。您的Product类不应定义为static。我建议:

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