Java中的泛型列表
时间:2020-01-09 10:36:00 来源:igfitidea点击:
可以泛化Java的List界面(java.util.List)。换句话说,可以为List的实例指定一种类型,因此只能插入该类型的实例并从该List中读取。这是一个例子:
List<String> list = new ArrayList<String>;
现在,该列表仅针对" String"实例,这意味着只能将" String"实例放入此列表。如果我们尝试在此"列表"中添加其他内容,则编译器会抱怨。
通用类型检查仅在编译时存在。在运行时,可以对代码进行调整,以使字符串列表具有插入了字符串的其他对象。不过,这是一个坏主意。
访问通用列表
我们可以像这样获取并插入通用List
的元素:
List<String> list = new ArrayList<String>; String string1 = "a string"; list.add(string1); String string2 = list.get(0);
注意,通常不需要强制转换从List.get()方法调用获得的对象。编译器知道此"列表"只能包含"字符串"实例,因此不需要强制转换。
迭代通用列表
我们可以使用迭代器来迭代通用的" List",如下所示:
List<String> list = new ArrayList<String>; Iterator<String> iterator = list.iterator(); while(iterator.hasNext()){ String aString = iterator.next(); }
注意,没有必要强制转换从下一次调用iterator.next()
返回的对象。因为List是泛型的(具有类型),所以编译器知道它包含String实例。因此,即使它来自它的"迭代器",也不必强制转换从它获得的对象。
我们还可以使用新的for循环,如下所示:
List<String> list = new ArrayList<String>; for(String aString : list) { System.out.println(aString); }
注意如何在for循环的括号内声明一个String
变量。对于每次迭代("列表"中的每个元素),此变量都包含当前元素(当前字符串)。