声明某个对象的ArrayList数组



我需要制作一个对象的数组。

我尝试了两种方法,但无法从数组元素访问对象的属性。

我试过了:

     ArrayList<Word>[] SubList = (ArrayList<Word>[])new ArrayList(MainList.size()); 

和:

    ArrayList<Word>[] SubList= new ArrayList[MainList.size()];

和:

           ArrayList<Word>[] SubList= (ArrayList<Word> [])new ArrayList[MainList.size()];

我想做的是从数组内的对象调用一个方法

像这样:

    SubList[0].get(0).method();

感谢提前

为了避免使用低级别数组并保持类型安全,您可以列出一个列表

List<List<Word>> listOfList = 
         new ArrayList<List<Word>>(new ArrayList<List<Word>>());

然后你可以像一样访问

Word word = listOfList.get(0).get(0);

通常情况下,您不能这样做,因为它不是类型安全的

请参阅Angelika Langer的Gererics常见问题解答(以及此处的一些附加说明)。

然而,您可以做的是编写代码,而不需要每次都使用泛型和类型转换。你会收到很多警告,但请注意,你确实在危险的水域航行。

Java不太支持泛型数组。但是,如果您坚持将顶层结构作为Array类型的对象,那么您可以通过创建一个扩展泛型的新类来解决这个限制:
import java.util.ArrayList;
class Test {
    private static class StringArrayList extends ArrayList<String> {}
    public static void main(String[] args) {
        StringArrayList[] sublist = new StringArrayList[1];
        int stringLength;
        sublist[0] = new StringArrayList();
        sublist[0].add("Hello");
        stringLength = sublist[0].get(0).length();
        System.out.println(stringLength);
    }
}

它不漂亮,但很管用。这对于个人项目来说很好,但对于大型Java企业来说可能有点过于杂乱和C++风格;)