Java中的模糊行为

时间:2017-12-26 09:10:25

标签: java variables boolean double

根据ob.fn()调用,此代码具有不明确的行为,根据函数定义,该代码非常清楚。但是当从' boolean'更改函数定义时到'加倍这种行为让我很意外。

public class Varargs {
    public void fn(boolean ...a){
        System.out.println("calling double fn");
        for(boolean i:a){
            System.out.print(i+" ");
        }
        System.out.println("\n");
    }

    public void fn(int ...a){
        for(int i:a){
            System.out.print(i+" ");
        }
        System.out.println("\n");
    }



    public static void main(String[] args) {
        System.out.println("Entering 5 numbers.");
        Varargs ob = new Varargs();
        ob.fn();
        ob.fn(2,5,5,3,2,2,3,4,3,3);
    }

}

但为什么不显示出歧义呢?

public class Varargs {
    public void fn(double ...a){
        System.out.println("calling double fn");
        for(double i:a){
            System.out.print(i+" ");
        }
        System.out.println("\n");
    }

    public void fn(int ...a){
        for(int i:a){
            System.out.print(i+" ");
        }
        System.out.println("\n");
    }



    public static void main(String[] args) {
        System.out.println("Entering 5 numbers.");
        Varargs ob = new Varargs();
        ob.fn();
        ob.fn(2,5,5,3,2,2,3,4,3,3);
    }

}

更改' boolean'到'加倍是什么导致了气氛的消失?

0 个答案:

没有答案