为什么这些varargs方法(在Java 6中可以正常工作)在Java 8中是不明确的

时间:2016-08-30 09:12:16

标签: java java-8

此代码在Java 6(IBM Java 6)中编译和运行,但不在Java 8(IBM Java 8和Eclipse的内置编译器)中编译:

public static void main(String[] args) {

    int[] values = { 45, 50, 55, 60,59,58, 45, 40, 50, 55,54,53,55 };

    //keep track so that previous smaller element is also included
    boolean pair=false;
    for (int i = 1; i < values.length;i++ ) {

        if(values[i-1]<values[i]){
            if(!pair){
                System.out.println(values[i-1]);
                pair=true;
            }
            System.out.println(values[i]);
        }else{
            pair=false;
        }
    }
}

编译错误是:

$(document).ready(function () {
            $("#txtdate").datepicker({
                minDate: 0
            });
        });

我在将实际应用程序从Java 6迁移到Java 8时发现了这个问题。这个代码对我来说没问题,因为当Java在重载方法中选择时,varargs方法通常被用作最后的手段。

这里有什么问题?

1 个答案:

答案 0 :(得分:0)

我认为这是因为Object类型。编译器认为布尔参数是Object的子类(可能是因为自动装箱?),所以它将其视为另一个vararg。