gpt4 book ai didi

Java 7 -> 无法使用比较器推断类型

转载 作者:行者123 更新时间:2023-12-02 01:19:05 25 4
gpt4 key购买 nike

当我使用 java 7 使用 PriorityQueue 和 Comparator 编译代码时,编译器发送错误:

 cannot infer type arguments for Comparator<T>;
Comparator<Map.Entry<Double, PureColor>> colorComparator = new Comparator<>() {
^
reason: cannot use '<>' with anonymous inner classes

为什么会这样,以及如何编译我的代码:

    Comparator<Map.Entry<Double, PureColor>> colorComparator  = new Comparator<Map.Entry<Double, PureColor>>() {

@Override
public int compare(Map.Entry<Double, PureColor> o1, Map.Entry<Double, PureColor> o2) {
return o1.getKey().intValue() - o2.getKey().intValue();
}
};

PriorityQueue<Map.Entry<Double, PureColor>> minHeap = new PriorityQueue<>(colorComparator);

最佳答案

这是 java-7 中的限制 <>匿名类不支持运算符

Class Instance Creation Expressions

如果类实例创建表达式使用“<>”形式作为类的类型参数来声明匿名类,则会出现编译时错误。

但是从jdk-9 <>匿名类支持运算符

What’s New for the Java Language in JDK 9

如果推断类型的参数类型是可表示的,则允许使用匿名类的菱形。

因此,要解决此问题,请将 java 7 升级到 java 9,或者仅定义通用参数,如示例中的第二种方法

Comparator<Map.Entry<Double, PureColor>> colorComparator  = new Comparator<Map.Entry<Double, PureColor>>()

关于Java 7 -> 无法使用比较器推断类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58043817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com