gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 21:20:42 25 4
gpt4 key购买 nike

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

类似的东西:

public class ClientList : List<Client> { }

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

public class ClientList extends ArrayList<Client>

最佳答案

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

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

此列表现在仅针对 String 实例,这意味着只能将 String 实例放入此列表中。如果您尝试将其他内容放入此列表,编译器会报错。

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

访问通用列表

您可以像这样获取和插入通用列表的元素:

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 循环的括号内声明的。对于每次迭代(列表中的每个元素),此变量包含当前元素(当前字符串)。

关于c# - 类似于 Java 中的 C# .NET Generic List,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10115769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com