在堆中创建`LocalDate`(java.time)时出错

时间:2014-10-26 16:34:21

标签: java date constructor java-8 java-time

我正在创建一个存储java.time.LocalDate个对象的堆程序。虽然我在为LocalDate创建临时变量时遇到了麻烦。我可能犯了一个小错误,但这是我的代码

private void trickleUp(int n) {
    int pIndex;
    if (n != 0) {
        pIndex = getParentIndex(n);
        if (heapA[pIndex].isAfter(heapA[n])) {
            LocalDate temp = new LocalDate(heapA[pIndex]);
            heapA[pIndex] = heapA[n];
            heapA[n] = temp;
            trickleUp(pIndex);
        }
    }
}

我收到错误'构造函数LocalDate(LocalDate)未定义'

1 个答案:

答案 0 :(得分:5)

LocalDate是一个不可变的类。没有理由创建另一个LocalDate实例的副本。你只需要

LocalDate temp = heapA[pIndex];

您应该始终检查您正在使用的类的javadoc。在这种情况下:http://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html。事实上,正如错误消息所说,LocalDate中没有构造函数将LocalDate作为参数。实际上,根本没有构造函数。 LocalDate实例通常通过将其他对象转换为LocalDate或使用javadoc中列出的静态工厂方法之一来创建。