为了账号安全,请及时绑定邮箱和手机立即绑定

如何使反向排序与泛型类类型一起使用

如何使反向排序与泛型类类型一起使用

湖上湖 2022-10-12 15:27:33
我有一个具有通用属性的类。public class MyClass<T> {    T data;    MyClassType source;    ZonedDateTime updatedTime;}我正在尝试以相反的顺序对包含不同类型 T 的上述类的列表进行排序myClassList.sort(Comparator.comparing(MyClass::getUpdatedTime).reversed()); //Doesn't work错误:(372、61)java:不兼容的类型:无法推断类型变量 T,U(参数不匹配;com.quicken.subscriptionservice.dtos.UnifiedHistoryResponse 类中的无效方法引用方法 getUpdatedTime 不能应用于所需的给定类型:找不到参数:java.lang.Object 原因:实际参数列表和形式参数列表的长度不同)错误:(372, 62) java: 无效的方法引用非静态方法 getUpdatedTime() 不能从静态上下文中引用如果我在排序中删除“.reversed”,它可以正常工作。此外,如果我修改我的类以使用 Object 类而不是下面的 Generic 类型,它就可以工作。public class MyClass {    Object data;    MyClassType source;    ZonedDateTime updatedTime;}现在下面的排序工作myClassList.sort(Comparator.comparing(MyClass::getUpdatedTime).reversed()); //Now works如果有人可以帮助我了解如何获得反向排序以适用于通用案例并帮助我了解为什么会出现上述错误,我将不胜感激。
查看完整描述

2 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

如果使用 Object 类,则将对象转换为 Object 类。它不是通用编程。您需要参数化方法引用。



查看完整回答
反对 回复 2022-10-12
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

我找到了一种使用通配符使用泛型的方法,如下所示

myClassList.sort(Comparator.comparing((MyClass<?> r) -> r.getUpdatedTime()).reversed());

这对我来说已经足够好了。希望它可以帮助对同一问题感兴趣的人。


查看完整回答
反对 回复 2022-10-12
  • 2 回答
  • 0 关注
  • 91 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信