java中的ac#.net通用列表如何?
像这样的东西:
public class ClientList : List<Client> { }
Nikil 的答案是完美的,我只想添加到任何想要从列表中创建类的人:
public class ClientList extends ArrayList<Client>
Java的List接口(java.util.List)可以被泛型化。换句话说,可以给 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 只能包含 String 实例,因此不需要强制转换。
迭代一个通用列表
您可以使用迭代器迭代通用列表,如下所示:
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 循环的括号内声明的。对于每次迭代(列表中的每个元素),此变量都包含当前元素(当前字符串)。