我有一個(gè)具有通用屬性的類。public class MyClass<T> { T data; MyClassType source; ZonedDateTime updatedTime;}我正在嘗試以相反的順序?qū)Π煌愋?T 的上述類的列表進(jìn)行排序myClassList.sort(Comparator.comparing(MyClass::getUpdatedTime).reversed()); //Doesn't work錯(cuò)誤:(372、61)java:不兼容的類型:無法推斷類型變量 T,U(參數(shù)不匹配;com.quicken.subscriptionservice.dtos.UnifiedHistoryResponse 類中的無效方法引用方法 getUpdatedTime 不能應(yīng)用于所需的給定類型:找不到參數(shù):java.lang.Object 原因:實(shí)際參數(shù)列表和形式參數(shù)列表的長度不同)錯(cuò)誤:(372, 62) java: 無效的方法引用非靜態(tài)方法 getUpdatedTime() 不能從靜態(tài)上下文中引用如果我在排序中刪除“.reversed”,它可以正常工作。此外,如果我修改我的類以使用 Object 類而不是下面的 Generic 類型,它就可以工作。public class MyClass { Object data; MyClassType source; ZonedDateTime updatedTime;}現(xiàn)在下面的排序工作myClassList.sort(Comparator.comparing(MyClass::getUpdatedTime).reversed()); //Now works如果有人可以幫助我了解如何獲得反向排序以適用于通用案例并幫助我了解為什么會(huì)出現(xiàn)上述錯(cuò)誤,我將不勝感激。
2 回答

暮色呼如
TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊
如果使用 Object 類,則將對(duì)象轉(zhuǎn)換為 Object 類。它不是通用編程。您需要參數(shù)化方法引用。

繁星點(diǎn)點(diǎn)滴滴
TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個(gè)贊
我找到了一種使用通配符使用泛型的方法,如下所示
myClassList.sort(Comparator.comparing((MyClass<?> r) -> r.getUpdatedTime()).reversed());
這對(duì)我來說已經(jīng)足夠好了。希望它可以幫助對(duì)同一問題感興趣的人。
添加回答
舉報(bào)
0/150
提交
取消