1 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊
讓我們看看你的ComponentCreator
private static class ComparatorCreator<T extends Comparable<? super T>>{
public Comparator<? extends T> getComparator()
{
return T::compareTo;
}
}
如果稍微改變一下以使你的錯誤更清楚
private static class ComparatorCreator<T extends Comparable<? super T>>{
public Comparator<? extends T> getComparator()
{
return (o1, o2) -> {
return o1.compareTo(o2);
};
}
}
您使用的方法引用與我的 lambda 相同,但它使錯誤更加明顯。如果我們一一檢查您的樣品,我們可以看到以下內(nèi)容:
comp.compare(bbig, bsmall); // calls bbig.compareTo(bsmall)
comp.compare(bbig, small); // calls bbig.compareTo(small)
comp.compare(big, small); // calls big.compareTo(small)
comp.compare(big, bsmall); // calls big.compareTo(bsmal)
您收到的輸出是有意義的,因?yàn)閎ig.compareTo()將調(diào)用compareTo()該類的函數(shù)Integer。
添加回答
舉報(bào)