迭代Java中任何类型的泛型数组
发布时间:2020-05-25 00:36:45 所属栏目:Java 来源:互联网
导读:如果存在可以携带原始类型,通用数组和/或可迭代集合的 Java Collection实例,我想将通用数组视为Iterable集合,但是如何?例如以下伪java代码 List? list1; list1.add(new int[2]); list1.add(new String[3]); list1.add(new ArrayList());for (Object e : list
|
如果存在可以携带原始类型,通用数组和/或可迭代集合的 Java Collection实例,我想将通用数组视为Iterable集合,但是如何?例如以下伪java代码 List<?> list1;
list1.add(new int[2]);
list1.add(new String[3]);
list1.add(new ArrayList());
for (Object e : list1){
if (e instanceof Iterable){
//The int[2] and String[3] will not fall in this case that I want it be
//Iterate within e
}
}
请告知如何使int [2]和String [3]落在案例中. 谢谢&问候, 解决方法在循环中,您可以为instanceof使用适当的数组操作数.对于int []: if (e instanceof int[]) {
// ...
}
对于Object数组(包括String []): if (e instanceof Object[]){
// ...
}
或者,在将数组添加到主列表时,可以将每个数组包装在 List<List> list1;
list1.add(Arrays.asList(new int[2]));
list1.add(Arrays.asList(new String[3]));
list1.add(new ArrayList());
for (List e : list1){
// no need to check instanceof Iterable because we guarantee it's a List
for (Object object : e) {
// ...
}
}
任何时候你一起使用instanceof和泛型,这是一种气味,你可能正在用你的泛型做一些不太正确的事情. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
