使用变量重载方法



我对这个话题有点困惑,原因是在这段代码中:

public class File
{
    public static void main(String[] args)
    {
        numbers();
    }
    static void numbers(int...x)
    {
        System.out.println("Integers");
    }
    static void numbers(byte...x)
    {
        System.out.println("Byte");
    }
    static void numbers(short...x)
    {
        System.out.println("Short");
    }
}

该代码的输出为"Byte",原因是选择了最具体的类型,因为byteshortint中最具体的类型是byte,所以选择了它。

但是如果我将代码修改为-

public class File
{
    public static void main(String[] args)
    {
        numbers(1, 4);
    }
    static void numbers(int...x)
    {
        System.out.println("Integers");
    }
    static void numbers(byte...x)
    {
        System.out.println("Byte");
    }
    static void numbers(short...x)
    {
        System.out.println("Short");
    }
}

输出是"整数",我不知道为什么?我知道在算术指令byteshort被隐式提升到int的情况下,但是在这里我们调用一个值在byteshort范围内的方法,那么如何调用int参数的方法?

而且,如果我用int参数注释掉方法,那么代码显示没有找到合适的方法的错误。为什么? ?

14为整数字面值。所以int...版本被称为。

没有byteshort字面量,但如果您要调用Numbers((byte)2, (byte)3);,则会调用byte...版本。

相关内容

  • 没有找到相关文章

最新更新