如何在java中使用ac#.net通用列表?
这样的事情:
public class ClientList : List<Client> { }
Run Code Online (Sandbox Code Playgroud)
Nikil的答案很完美,我只想添加到想要从List中创建一个类的人:
public class ClientList extends ArrayList<Client>
Run Code Online (Sandbox Code Playgroud)
Nik*_*wal 20
可以对Java的List接口(java.util.List)进行泛化.换句话说,List的实例可以被赋予类型,因此只能插入该类型的实例并从该列表中读取.这是一个例子:
List<String> list = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)
此列表现在仅针对String实例,这意味着只能将String实例放入此列表中.如果您尝试将其他内容放入此List中,编译器将会抱怨.
泛型类型检查仅在编译时存在.在运行时,可以调整代码,以便String List包含插入String的其他对象.不过,这是一个坏主意.
访问通用列表
您可以像这样获取和插入泛型List的元素:
List<String> list = new ArrayList<String>();
String string1 = "a string";
list.add(string1);
String string2 = list.get(0);
Run Code Online (Sandbox Code Playgroud)
注意如何不必像通常那样强制转换从List.get()方法调用中获取的对象.编译器知道此List只能包含String实例,因此不需要强制转换.
迭代通用列表
您可以使用迭代器迭代通用List,如下所示:
List<String> list = new ArrayList<String>();
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()){
String aString = iterator.next();
}
Run Code Online (Sandbox Code Playgroud)
注意如何不必抛出从iterator.next()下一次调用返回的对象.因为List是通用的(具有类型),所以编译器知道它包含String实例.因此,即使它来自它的迭代器,也没有必要抛出从它获得的对象.
您也可以使用新的for循环,如下所示:
List<String> list = new ArrayList<String>();
for(String aString : list) {
System.out.println(aString);
}
Run Code Online (Sandbox Code Playgroud)
注意如何在for循环的parantheses中声明String变量.对于每次迭代(List中的每个元素),此变量包含当前元素(当前String).
| 归档时间: |
|
| 查看次数: |
11635 次 |
| 最近记录: |