java - 没有警告的通用接口(interface)比较器

标签 java generics comparator

给定:

public interface PrimaryKey<Key extends Comparable> {
    Key getKey();
}

public class PrimaryKeyComparator implements Comparator<PrimaryKey> {
    public int compare(PrimaryKey first, PrimaryKey second) {
        return first.getKey().compareTo(second.getKey());
    }
}

此组合有效,但会给出有关原始类型的警告。我尝试了多种添加类型参数的方法,但我尝试过的每一种组合都会破坏代码。

最佳答案

试试这个:

public interface PrimaryKey<TKey extends Comparable<TKey>> {
    TKey getId();
}

public class PrimaryKeyComparator<TKey extends Comparable<TKey>> 
                                 implements Comparator<PrimaryKey<TKey>> {
    public int compare(PrimaryKey<TKey> first, PrimaryKey<TKey> second) {
        return first.getId().compareTo(second.getId());
    }
}

关于java - 没有警告的通用接口(interface)比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4054342/

相关文章:

java - 向学生解释接口(interface)

c# - 使用泛型 Func<T> 的异步方法

java - 获取错误 : Comparison method violates its general contract

java - 由于名称冲突无法重写方法

java - TreeBag 的比较器按出现次数排序

java - 如何对类对象列表的某个字段进行排序?

java - Mysql blob 图片转换为 awt.image,然后 awt.image 转换为 blob,无需更改大小

java - 将服务器时间设置为本地时间

java - 如何使用 Gradle 为 Archiva Repo 设置加密的存储库密码?

Java - 用于存储函数的类型安全异构容器模式