Java三元运算符和方法重载

时间:2017-10-15 01:17:44

标签: java overloading return-type conditional-operator system.out

我刚刚了解到,在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

再次,是什么导致这个?即使两种情况都会导致错误,为什么不同的方法声明顺序会导致编译器出现不同的错误?

0 个答案:

没有答案