gpt4 book ai didi

Java 泛型和扩展的比较

转载 作者:行者123 更新时间:2023-12-01 17:18:08 26 4
gpt4 key购买 nike

我需要构建一个具有通用字段的类Course(我无法添加另一个包含Comparator的字段)。

我需要为类Course创建一个Comparator,以便可以使用它自己的CompareTo方法来比较通用字段(如果String-compareTo 按字符串,如果按整数等..):

方法getGeneric()返回通用字段。

new Comparator<Course<?>>( {
public int compare(Course<?> o1, Course<? extends Comparable<?>> o2) {
return (o1.getGeneric()).compareTo(o2.getGeneric());
}
});

最佳答案

您可能应该做的是拥有一个声明可比较的 T 的方法。 ,并返回 Comparator<Course<T>> .

public static <T extends Comparable<T>> Comparator<Course<T>> comparator() {
return new Comparator<Course<T>>() {
@Override
public int compare(Course<T> o1, Course<T> o2) {
// I don't want to give away TOO much. :)
}
}
}

有一些方法可以做到这一点,而无需每次都创建新实例,但它们需要绕过类型系统,因此它们更高级。上述内容对于大多数用例来说应该没问题。

你也可以有 comparator函数取 Comparator<T>本身:

public static <T> Comparator<Course<T>> comparator(Comparator<T> innerComparator) {
...
}

这为您提供了额外的灵 active ,以及​​为没有自然比较的类型(即不实现 Comparable )创建比较器的能力。例如,您可以创建 Comparator<Course<Course<Integer>>> !

关于Java 泛型和扩展的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20618503/

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