maven构建的泛型问题

时间:2012-02-23 14:17:56

标签: java generics maven

我创建了一个小实用程序,它可以帮助我按值对地图进行排序(根据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。

任何提示赞赏

1 个答案:

答案 0 :(得分:2)

我想这是因为:

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

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