Ich habe dies in der Mitte einer Entwicklung festgestellt.Warum arbeitet der Ternary-Operator nicht innerhalb eines Methodenarguments in Java
Warum arbeitet der Ternary-Operator nicht innerhalb eines Methodenarguments? Hier ist es eindeutig oder (sonst) String
.
class A{
public static boolean opAlpha(InputStream inputStream) {
// Do something
return true;
}
public static boolean opAlpha(String arg) {
// Do something else
return true;
}
public static void main(String[] args) throws Exception {
boolean useIsr = true;
InputStream inputStream = null;
String arg = null;
// boolean isTrue = useIsr ? A.opAlpha(inputStream): A.opAlpha(arg); // This is OK.
boolean isTrue = A.opAlpha(useIsr ? inputStream : arg); // This is not. (Error : The method opAlpha(InputStream) in the type A is not applicable for the arguments (Object))
}
}
Hier wird kein Bediener überlastet. – EJP
Und meine übliche pedantische Bemerkung: Es ist nicht der ternäre Operator, es ist der [* bedingte Operator *] (https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls- 15,25). Es ist wahr, dass es ein ternärer Operator ist (ein Operator, der drei Operanden akzeptiert), und es ist wahr, dass es das einzige Java ist, aber theoretisch könnte es irgendwann andere geben ... :-) –
Danke T.J. Hab deinen Punkt! – namalfernandolk