【发布时间】:2016-05-08 19:35:15
【问题描述】:
当我调用时,call('a'); 它会输出“char”,这很好,因为 char 原始类型将优先于将其装箱为 Character。
static void call(char i){
System.out.println("char");
}
static void call(Character i){
System.out.println("Character");
}
call('a', 'a'); 的调用为何不明确?
static void call(char i, Character j){
System.out.println("char");
}
static void call(Character i, Character j){
System.out.println("Character");
}
我的想法是第二个参数编译器必须使用 Boxing,而第一个参数完美匹配是 char 原始类型,因此对 call('a','a'); 的调用可以解析为 call(char i, Character j) 方法。
显然我理解错了,请高人解释一下。
一些解释此类示例的链接会有所帮助。
【问题讨论】:
标签: java overloading