类似于Java中的C# .NET Generic List

本文关键字:Generic List NET Java 中的 类似于 | 更新日期: 2023-09-27 18:31:01

在java中,c# .net泛型列表如何?

像这样:

public class ClientList : List<Client> { }

Nikil 的回答是完美的,我只想添加到想要从列表中创建类的人:

public class ClientList extends ArrayList<Client>

类似于Java中的C# .NET Generic List

Java的List接口(java.util.List)可以泛化。换句话说,可以指定 List 的实例一个类型,因此只能插入该类型的实例并从该列表中读取。下面是一个示例:

List<String> list = new ArrayList<String>();

列表现在仅面向字符串实例,这意味着只能将字符串实例放入此列表中。如果您尝试将其他内容放入此列表中,编译器将抱怨。

泛型类型检查仅在编译时存在。在运行时,可以调整代码,以便字符串列表具有字符串插入的其他对象。不过,这是一个坏主意。

访问泛型列表

您可以获取并插入通用列表的元素,如下所示:

List<String> list = new ArrayList<String>();
String string1 = "a string";
list.add(string1);
String string2 = list.get(0);

请注意,通常不需要强制转换从 List.get() 方法调用中获取的对象。编译器知道此列表只能包含字符串实例,因此不需要强制转换。

迭代泛型列表

您可以使用迭代器迭代泛型列表,如下所示:

List<String> list = new ArrayList<String>();
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()){
    String aString = iterator.next();
}

请注意,没有必要强制转换从 iterator.next() 下一次调用返回的对象。由于 List 是通用的(具有类型),因此编译器知道它包含字符串实例。因此,没有必要强制转换从中获得的对象,即使它来自它的迭代器。

您还可以使用新的 for 循环,如下所示:

List<String> list = new ArrayList<String>();
for(String aString : list) {
    System.out.println(aString);
}

请注意 String 变量是如何在 for 循环的参数中声明的。对于每次迭代(列表中的每个元素),此变量包含当前元素(当前字符串)。