比较器在运行时获取方法参考

时间:2018-12-15 18:23:20

标签: java lambda java-8 comparator

我有一个名为MyClass的类,其中包含带有getter和setter的各种属性。我有一个方案,可以根据要在运行时确定的属性以升序或降序对列表进行排序。现在,我拥有的是

li.sort(Comparator.comparing(MyClass::getMyFunc).reversed());

在上述情况下,我必须使用if条件来检查必须使用asc或desc对其进行排序的属性,即getMyFunc。是否可以在运行时提供方法引用,而不是在else语句中检查它?

编辑:我从用户端获得输入。因此,如果用户选择按asc或desc顺序按日期排序属性,那么我的代码应该像

li.sort(Comparator.comparing(MyClass::getGeneratedDate).reversed());

对于ASC和DESC订单,我将不得不使用like

if("asc".equals(type))
    li.sort(Comparator.comparing(MyClass::getGeneratedDate));
else 
    li.sort(Comparator.comparing(MyClass::getGeneratedDate).reversed());

0 个答案:

没有答案