基本上,我想创建一个在编译时就已经知道的值的数据结构。在C语言中,我会这样做:

struct linetype { int id; char *descr; };

static struct linetype mylist[] = {
    { 1, "first" },
    { 2, "second" }
};

我在Java中发现的唯一灵魂是在运行时创建数组:
public class Outer {

    public class LineType {
        int id;
        String descr;

        private LineType( int a, String b) {
          this.id = a;
          this.descr = b;
        }
    }

    LineType[] myList = {
        new LineType( 1, "first" ),
        new LineType( 2, "second" ),
    };

这看起来很麻烦且无效(当结构变长且复杂时)。还有另一种方法吗?

(注意:请不要理会任何语法错误,因为这只是为此问题创建的示例代码。此外,我知道String除了指向数据段的字符指针之外还有其他用途。但是,该参数也适用于原始数据类型)。

最佳答案

您必须将LineType设为静态类:

public class Outer {

    public static class LineType {
        int id;
        String descr;

        private LineType( int a, String b) {
          this.id = a;
          this.descr = b;
        }
    }

    static LineType[] myList = {
        new LineType( 1, "first" ),
        new LineType( 2, "second" ),
    };
}

09-04 06:06