1
littleshy 2017-03-04 11:32:02 +08:00
string 吧,不同类型以具体的为准。
|
2
ml3661190 2017-03-04 11:35:03 +08:00
输出 String 具体为什么我也不清楚,坐等大神解答
|
3
Kylinsun 2017-03-04 11:35:46 +08:00 via Android
你传的是什么类型调用的就是什么样的方法。
|
4
chnyang 2017-03-04 11:46:01 +08:00
输出的不应该是 String 么 ..
System.out.println("String"); |
5
ml3661190 2017-03-04 11:47:20 +08:00
不同类型以具体的为准。理解这句话应该就没问题了,我刚刚测试了一下
当传入的参数,未能有具体类型重载方法时,选择入参的的超类,也就是 Object 入参的方法 当有 Object , String , boolean 三个重载的方法时,传入 null 值,编译器则会报出一个 ambiguous 的编译异常 因为 String 跟 boolean 的方法都属于具体的类型,编译器无法判断选择那一个 大概就是这么个意思吧 |
6
chnyang 2017-03-04 11:47:20 +08:00
@ml3661190 我是菜鸟..不知道这是不是坑,但是 test 方法唯一的一行代码只是输出一个固定的字符串而已.. 求轻喷
|
7
yidinghe 2017-03-04 11:48:47 +08:00 via Android
编译失败。
|
9
a1310747 OP @ml3661190 当有 Object , String , boolean 三个重载的方法时,传入 null 值,并不会报错 依然还是输出 String
|
10
Cloudee 2017-03-04 11:52:41 +08:00 via iPhone
compile error
|
11
feiyuanqiu 2017-03-04 12:12:37 +08:00
jls8 §15.12.2
--------------- There may be more than one such method, in which case the most specific one is chosen. The descriptor (signature plus return type) of the most specific method is the one used at run time to perform the method dispatch. https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.12.2 |
12
depress 2017-03-04 12:30:21 +08:00
方法重载优先选子类
|
13
ovear 2017-03-04 12:51:21 +08:00
优先匹配子类呀。。
|
14
feeeeeef 2017-03-04 13:21:01 +08:00
编译不通过
|