Java Long Compare 和 ValueOf 方法未定义

Java Long Compare and ValueOf method undefined

我正在引用我的 java 版本 JDK 1.8,但我仍然遇到错误。这个引用有什么问题(6 年后写 Java)?或任何其他更简单的方法来做到这一点?我做了一些搜索,这些功能在以后的 java 版本中可用。 Eclipse 是 Oxygen

The method valueOf(Long) is undefined for the type Long

The method compareTo() is undefined for the type Long

import java.util.Comparator;
import java.lang.Long;

public class MyComparator<Long> implements Comparator<Long>{
    @Override
    public int compare(Long long1, Long long2) {    
        //Long.compareTo()
          return Long.valueOf(long1).compareTo(Long.valueOf(long2));
    }
}

和 JDK 指向

/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home

您对 MyComparator 的声明声明了通用类型的名称 Long,然后是 shadows java.lang.Long。您的 class 不应该是通用的。此外,您不需要 Long.valueOf 因为您已经拥有 Long 实例。更改它以删除通用,例如

public class MyComparator implements Comparator<Long> {
    @Override
    public int compare(Long long1, Long long2) {
        return long1.compareTo(long2);
    }
}

或者任何时候您需要 Comparator<Long> 或任何其他实现 Comparableclass 您可以调用:

Comparator.naturalOrder()

https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html#naturalOrder--