java - Maven 构建的泛型问题

标签 java generics maven

我创建了一个小实用程序,可以帮助我按值对 map 进行排序(基于 StackOverflow 的答案之一):

public static <K, V extends Comparable> Map<K, V> sortMapByValues(Map<K, V> original) {
    final ValueComparator<K, V> comparator = new ValueComparator<K, V>(original);
    final Map<K, V> sorted = new TreeMap<K, V>(comparator);
    sorted.putAll(original);

    return sorted;
}

以及ValueComparator:

static class ValueComparator<K, V extends Comparable<V>> implements Comparator<K> {
    private final Map<K, V> base;

    public ValueComparator(Map<K, V> base) {
        this.base = base;
    }

    public int compare(K a, K b) {
        return base.get(b).compareTo(base.get(a));
    }
}

现在,当代码在我的 IntelliJ 10 IDE 中运行并执行我期望的操作时,效果非常好。

但是如果我尝试从命令行通过 Maven 构建项目,我会收到以下错误:

type parameter V is not within its bound

据说错误出现在 sortMapByValues() 方法的第一行

我在 IDE 中使用 JDK 6,并且我的 Maven 编译器插件也设置为 1.6。

任何提示表示赞赏

最佳答案

我猜这是因为:

V extends Comparable (在 sortMapByValues 中)和 V extends Comparable<V>上课ValueComparator

将第一个也更改为 V extends Comparable<V>

关于java - Maven 构建的泛型问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9414770/

相关文章:

java - IndexOutOfBoundsException 故障排除提示

java - joda hibernate 时间到 DB2 DATE

Java:读取文件输入内容并在找到某些线条图案序列时对其进行过滤

java - 在泛型方法java中传递类类型

c# - 当我向基类提供类型参数时,为什么我的子类仍然是通用的?

java - 在 Maven 中使用 Java 10 的 Groovy 2.5.3

java - 如何访问 2D 按钮阵列中的一个按钮? Java Swing

generics - 在 Rust 中接受 &Vec<T> 和 &Vec<&T> 的函数

java - Gradle无法解析标记为 'LATEST'的依赖项的依赖项

maven - 运行使用 maven 构建的 jar 时的 FlinkMLTools NoClassDef