初始化和命名,Java中的ArrayList

初始化和命名,Java中的ArrayList,java,initialization,Java,Initialization,我有几个对象要存储在一个arrayList中,它表示一条汇编语言指令(例如Add、Jump等)。对于给定的指令,每个ArrayList中的对象都是常量,因此我只需要在加载时将给定指令的每个对象加载到适当的ArrayList中一次 令人厌烦的是,在将每个对象添加到arrayList之前,我需要为它们命名: static { ... ArrayList<CodeFrag[]> intIntGtrEqlProtoCode = new Arra

我有几个对象要存储在一个arrayList中,它表示一条汇编语言指令(例如Add、Jump等)。对于给定的指令,每个ArrayList中的对象都是常量,因此我只需要在加载时将给定指令的每个对象加载到适当的ArrayList中一次

令人厌烦的是,在将每个对象添加到arrayList之前,我需要为它们命名:

    static {
        ...
            ArrayList<CodeFrag[]> intIntGtrEqlProtoCode = new ArrayList<CodeFrag[]>();
...
                        intIntGtrEqlProtoCode.add(intIntGtrEqlInst1);
                        CodeFrag[] intIntGtrEqlInst2 = {Subtract};
                        intIntGtrEqlProtoCode.add(intIntGtrEqlInst2);
                        CodeFrag[] intIntGtrEqlInst3 = {Duplicate};
        ...
    }
静态{
...
ArrayList intIntGtrEqlProtoCode=新的ArrayList();
...
intIntGtrEqlProtoCode.add(intIntGtrEqlInst1);
CodeFrag[]intIntGtrEqlInst2={Subtract};
intIntGtrEqlProtoCode.add(intIntGtrEqlInst2);
CodeFrag[]intIntGtrEqlInst3={Duplicate};
...
}

我有一种感觉,有一种方法可以避免所有这些极其乏味的命名。有人能给我指出吗?

你可以这样做:

CodeFrag[] arr = {Subtract, Duplicate, Foo, Bar};
for (CodeFrag c : arr)
    intIntGtrEqlProtoCode.add(new CodeFrag[]{c});
另外,如果所有数组都有长度
1
,您不能用
列表替换它吗?那你就可以这么做了

intIntGtrEqlProtoCode = new ArrayList<CodeFrag>(Arrays.asList(Subtract, Duplicate, Foo, Bar));
intIntGtrEqlProtoCode=newarraylist(Arrays.asList(Subtract,replicate,Foo,Bar));

intIntGtrEqlProtoCode.add(新的CodeFrag[]{Subtract})