有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java Comparator提供了要比较的属性的名称

我的问题是;我得订一份数据表。表的每一行都是存储在列表中的对象(我们称之为TableObject)。数据的每一列都是类的一个属性(通常是字符串)

当用户点击任何一列时,我必须对数据进行典型的排序。因此,我考虑将列表更改为树集,并在TableObject中实现Comparator

当我尝试重新排列树集时,问题就出现了。比较一开始相当容易(忽略了在parseInt中查找异常):

   public int compare(TableObject to1, TableObject to2){
        TableObject t1 = to1;
        TableObject t2 = to2;

        int result = 1;

        if(Integer.parseInt(t1.getId()) == Integer.parseInt(t2.getId())){result=0;}
        if(Integer.parseInt(t1.getId()) < Integer.parseInt(t2.getId())){result=-1;}

        return result;

    }

但是,当我必须按数据的文本或TableObject拥有的其他几十个数据重新排序时,我遇到了一个问题。 我不想创建几十个比较函数,每个函数对应一个。我不喜欢使用开关(或一系列ifs)来决定如何比较对象

有没有什么方法可以做到这一点(比如反身),这并不意味着我将编写数百行几乎相同的代码

谢谢大家


共 (1) 个答案

  1. # 1 楼答案

    是的,您可以使用reflection API,根据字段的名称获取字段的内容

    参见^{}类,尤其是^{}方法

    (不过我不建议这样做,因为反射不是为这种任务设计的。)