0

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

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

如您所见,它是一个数组数组,并创建了一个等效于 DB 表的对象。这种表的列由不同的类型组成(尽管所有数据首先是字符串,其次是整数,等等)

我应该用什么代替(某物)?

4

6 回答 6

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)
};
于 2013-06-22T11:12:07.797 回答
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)
};
于 2013-06-22T11:14:56.197 回答
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 } ,
};
于 2013-06-22T11:20:20.810 回答
0

尝试

 public static final String[][] names = { namesarray1, namesarray2 };
于 2013-06-22T11:08:18.690 回答
0

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

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

于 2013-06-22T11:10:06.087 回答
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
}
于 2013-06-22T11:12:45.347 回答