代码:
public class Foo {
static void test(String s){
System.out.println("String called");
}
static void test(int s){
System.out.println("int called");
}
public static void main(String[] args) throws Exception {
test(5>8? 5:8); // Line 1
test(5>8? "he":"ha"); // Line 2
test(5>8? 5:"ha"); // Line 3
System.out.println(5<8? 5:"ha"); //Line 4
}
}
当我执行此代码时,出现以下错误Line 3
Foo.java:24: error: no suitable method found for test(INT#1)
test(5>8? 5:"ha"); // Line 3
^
在三元运算符中使用类似类型不会出错。但是使用不同的类型只会给方法调用带来错误,test(5>8? 5:"ha");
但它适用于调用System.out.println(5<8? 5:"ha");
当我添加另一个重载方法static void test(Object s){}
时,然后//Line 3
编译。
谁能解释一下这种情况?