使用数组定义常量表

时间:2013-06-22 11:06:57

标签: java

在Java中,我想创建某种由final static常量数组组成的信息表。我想在宣布时初始化它们。我尝试使用数组ArrayListHashMap,但我找不到允许我编写类似内容的语法。

public static final (something) names = {
        { "Albert Einstein", number_1, number_2 } ,
        { "Isaac Newton", number_3, number_4 } ,
        { "Pitagora", number_5, number_6 } ,
};

正如您所看到的是一个数组数组,并创建了一个与DB表等效的数组。这种表的列由不同类型组成(尽管首先所有数据都是字符串,第二位是整数,依此类推)

我应该用什么代替什么?

6 个答案:

答案 0 :(得分:4)

数组表示相同类型数据的列表。因此,

 { "Albert Einstein", number_1, number_2 }

不应该是一个数组。事实上,它在Java中不是任何标准,因为这是您的应用程序特有的。

制作类似

的课程
public class MyData {
    public final String name;
    public final int number1;
    public final int number2;

    public MyData(String name, int number1, int number2) {
        this.name = name;
        this.number1 = number1;
        this.number2 = number2;
    }
}

并宣布

public static final MyData[] names = new MyData[] {
    new MyData("Albert Einstein", number_1, number_2) ,
    new MyData("Isaac Newton", number_3, number_4),
    new MyData("Pitagora", number_5, number_6)
};

答案 1 :(得分:1)

您正在寻找自定义类:

public class Scientist {
    private String name;
    private int numInventions;
    private int numStudents;
    public Scientist(String name, int numInventions, int numStudents) {
        this.name = name;
        this.numInventions = numInventions;
        this.numStudents = numStudents;
    }
    public String getName() {return name;}
    public int getNumInventions() {return numInventions;}
    public int getNumStudents() {return numStudents;}
}

现在您可以按如下方式初始化数组:

Scientist[] scientists = new Scientist[] {
    new Scientist("Albert Einstein", number_1, number_2),
    new Scientist("Isaac Newton", number_3, number_4),
    new Scientist("Pitagora", number_5, number_6)
};

答案 2 :(得分:1)

如果你不介意缺乏强类型,即使用Object,你可以简单地使用一个Object数组数组。

编译:

public static final Object [][] names = {
    { "Albert Einstein", number_1, number_2 } ,
    { "Isaac Newton", number_3, number_4 } ,
    { "Pitagora", number_5, number_6 } ,
};

答案 3 :(得分:0)

尝试

 public static final String[][] names = { namesarray1, namesarray2 };

答案 4 :(得分:0)

1)封装。创建一个Class,它汇集了一组属性(名称及其相关属性)

2)创建数组[]Collection(使用子类)来保存该类的值(实例)

答案 5 :(得分:0)

最好在static初始化程序中执行此操作,例如

public static final List<Something> names;

static {
    names = new List<Something>();
    // init here below using .add()
    names.add(Something); // something would contain the 3 fields you're grouping together
}