Почему это недействительная Java? Тип вывода тернарного оператораJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему это недействительная Java? Тип вывода тернарного оператора

Сообщение Anonymous »

Проверьте этот код.

Код: Выделить всё

// Print object and recurse if iterable
private static void deep_print(Object o) {
System.out.println(o.getClass().toString() + ", " + o.toString());

boolean iter = false;
Iterable i1 = null;
Object[] i2 = null;

if (o instanceof Iterable) {
iter = true;
i1 = (Iterable) o;
} else if (o instanceof Object[]) {
iter = true;
i2 = (Object[]) o;
}

if (iter) {
for (Object o_ : i2 == null ? i1 : i2) deep_print(o_); // ERROR: Can only iterate over an array or an instance of java.lang.Iterable
}
Я знаю, как это решить. Я просто хочу знать, почему это происходит. Разве компилятор не должен просто проверять все возможные выходные данные?

Подробнее здесь: https://stackoverflow.com/questions/129 ... tor-output
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»