在方法调用时进行类型转换

时间:2018-08-22 21:41:44

标签: java

public class Demo1{
    public static void main(String[] args){
                    show('A','A');
    }
    public static void show(char c, long a){
        System.out.println("long-char");
    }
    public static void show(char c, int a){
        System.out.println("char-int");
    }
}

输出:char-int

但是当我在第一个show()方法中更改参数的顺序时(替换 public static void show(char c, long a){}public static void show(long a, char c) {}),出现编译错误。

1 个答案:

答案 0 :(得分:2)

编译器说这是模棱两可的方法调用,因为它是。

解决重载的一般方法是在给定实际参数的数量和类型的情况下,找到最具体的适用方法。

在第一种情况下,这两种方法都将<span class="align-text-middle"> text </span> <span class="align-text-top"> text </span> <span class="align-text-bottom"> text </span>作为其第一个参数;因此只有在实际参数是char的情况下才选择int或long重载是更具体的:更具体的是char重载,因为intint窄。

在第二种情况下,一个方法将char作为第一个参数;一种方法将char作为第二个参数。因此,假设实际参数都是long,则必须转换(扩展)其中一个参数以调用这两个方法。

在这种情况下,语言规范没有定义一个比另一个更具体;它们都被认为是同等适用的,因此方法调用是模棱两可的,因此是编译时错误。

相关问题