Есть ли возможность проверить, является ли объект массивом или коллекцией с одним предложением? Чего я пытаюсь достичь:
Предполагая, что массивы реализуют Iterable, и предполагая, что Object foo
может быть либо массивом, либо коллекцией, я хотел бы использовать фрагмент кода, подобный следующему:
if (foo instanceof Iterable) {
for (Object f : (Iterable) foo) {
// do something with f
}
}
К сожалению, массив не может быть приведен к Iterable. Он также не реализует коллекцию. Есть ли другие возможности для обработки обоих в одном цикле, как указано выше? Вместо - конечно - использования if-else if-условия и двух циклов (что было бы неплохо).
Изменение: в ответ на эти ответы. Я знаю о методе isArray(), но в этом случае приведение
...
for (Object f : (Iterable) foo) {
...
не удастся. Это было бы жаль и избыточность кода, поскольку мне пришлось бы использовать два цикла, хотя цикл foreach работает как с коллекциями, так и с массивами.