В вашем цикле вы можете использовать соответствующий операнд массива для instanceof
.
Для int[]
:
if (e instanceof int[]) {
// ...
}
Для Object
массивов (включая String[]
):
if (e instanceof Object[]){
// ...
}
В качестве альтернативы, добавляя свои массивы к своему мастеру List
, вы можете обернуть каждый из них в Arrays.asList()
.В этом случае вы можете использовать универсальный List<List>
вместо универсального универсального List<?>
и избежать необходимости проверять тип данных с помощью instanceof
.Примерно так:
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
и дженерики вместе, запах, что вы можете делать что-то не совсем правильное с дженериками.