我刚刚了解到,在Java中,三元运算符可以返回不同类型,
int x = 6;
System.out.println( (x==6) ? true : "false" );
是打印“true”的有效Java代码。 但是,当我尝试创建自己的测试方法来接受这个三元语句的输出时,Java会给我一个错误。这是我的代码:
public class Test {
public static void main(String[] args) {
int x = 6;
method( (x==6) ? true : "false" );
}
public static void method(boolean x) {
System.out.println("int");
}
public static void method(String x) {
System.out.println("String");
}
}
我收到编译时错误:
Type mismatch: cannot convert from String to boolean
为什么这适用于println()
方法,而不适用于我自己的重载方法?此外,当我切换方法的顺序时,将method(String)
放在method(boolean)
之前,Java给出了一个稍微不同的错误:
Type mismatch: cannot convert from boolean to String
再次,是什么导致这个?即使两种情况都会导致错误,为什么不同的方法声明顺序会导致编译器出现不同的错误?