Tôi đã nhận thấy điều này ở giữa sự phát triển.Tại sao toán tử Ternary không hoạt động bên trong một đối số phương thức trong java
Tại sao toán tử Ternary không hoạt động bên trong một đối số phương thức? Ở đây rõ ràng là InputStream
hoặc (khác) 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))
}
}
Không có quá tải toán tử ở đây. – EJP
Và bình luận bình thường của tôi: Nó không phải là toán tử bậc ba, đó là [* toán tử điều kiện *] (https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls- 15,25). Đúng là nó là ** một toán tử ternary (một toán tử chấp nhận ba toán hạng), và đúng là nó là Java duy nhất, nhưng trong lý thuyết có thể có những người khác tại một số điểm ... :-) –
Cảm ơn T.J. Có quan điểm của bạn! – namalfernandolk