Sehen Sie sich diesen Code an.Warum ist das Java ungültig? Typ des ternären Operatorausgangs
// 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
}
Ich weiß, wie man es löst. Ich will nur wissen, warum es passiert. Sollte der Compiler nicht einfach alle möglichen Ausgaben überprüfen?
Neugierig: Wenn Sie null auf (Iterable) werfen, würde das funktionieren? –
@AlexFeinman - Nein, es wird nicht helfen. –
+1 Obwohl es unklar ist, was genau Sie mit "Theoremprüfung" gemeint haben - bitte klären Sie das, wenn möglich. –