Java不太支持泛型数组。但是,如果您坚持将顶层结构作为
我需要制作一个对象的数组。
我尝试了两种方法,但无法从数组元素访问对象的属性。
我试过了:
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常见问题解答(以及此处的一些附加说明)。
然而,您可以做的是编写代码,而不需要每次都使用泛型和类型转换。你会收到很多警告,但请注意,你确实在危险的水域航行。
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++风格;)