Java Comparator reversed()导致编译器错误
假设类结构如下:Java Comparator reversed()导致编译器错误,java,generics,polymorphism,comparator,Java,Generics,Polymorphism,Comparator,假设类结构如下: abstract class Animal<A extends Animal<A>> { ... someAbstractMethodDefinitions } class Duck<D extends Duck<D>> extends Animal<D> { public int getBeekSize() { return beekSize; } p
abstract class Animal<A extends Animal<A>>
{
... someAbstractMethodDefinitions
}
class Duck<D extends Duck<D>> extends Animal<D>
{
public int getBeekSize()
{
return beekSize;
}
public int getHeadSize()
{
return headSize;
}
}
class Mallard extends Duck<Mallard>
{
.. someCode
}
换句话说,为什么我可以在比较器中添加一个反向?这两个代码块之间的唯一区别是删除了.reversed。您可以在此处找到类似的问题: 解决方案是这样做:
Collections.sort(ducks, Comparator.comparing((Duck d) -> d.getHeadSize()).reversed());
编辑:
添加与此问题相关的错误:
用MCVE。你能发一张MCVE吗?或者,如果我的示例不适合您,请发布您正在使用的Java版本。谢谢,这比完全匿名比较器要好得多。我确实看到了这个链接,但还没有意识到它是相关的。非常感谢。
List<Duck> ducks = Arrays.asList(new Duck(), new Duck(), ...);
Collections.sort(
ducks,
Comparator.comparing(Duck::getBeekSize));
Collections.sort(ducks, Comparator.comparing((Duck d) -> d.getHeadSize()).reversed());