sách gpt4 ai đã đi

java - 比较器与 Apache BeanComparator

In lại 作者:搜寻专家 更新时间:2023-10-30 19:40:20 26 4
mua khóa gpt4 Nike

考虑一个简单的类:

class Employee {

Tên chuỗi;
int sal;

....//getters and setters
}

例如,我可以创建一个比较器来对字段名称进行排序。

class EmpSortByName implements Comparator{

@Ghi đè
public int compare(Employee e1, Employee e2){
return e1.getName().compareTo(e2.getName());
}
}

但是,查看 apache commons BeanComparator,排序可以通过以下方式实现:

BeanComparator bc = new BeanComparator("name");
Collections.sort(employeeList, bc);

因此,通过使用 BeanComparator,我可以用最少的代码实现排序。使用 Comparators 和 BeanComparators 之间的权衡是什么:在性能、使用场景(多字段排序、其他因素)方面?

我还了解到,要使用 BeanComparator,必须导入 beanutils jar。

1 Câu trả lời

BeanComparator 使用反射来访问 name 属性并比较两个对象。虽然反射性能有所提高,但仍然不如直接访问字段快。这是否重要取决于它在您的应用程序中被调用的次数以及在何种上下文中。

另一个问题是,如果重构方法并将其重命名为getLastName(),则使用BeanComparator 的代码将不会被重构,直到运行时(或单元测试时)才会发现问题).

坦率地说,实现比较器非常简单,我认为使用反射不是一个好主意。避免 4 行琐碎代码的好处不足以补偿它导致的性能和可维护性问题。

关于java - 比较器与 Apache BeanComparator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11441623/

26 4 0
Bài viết được đề xuất: java - Java 中的语法检查
Bài viết được đề xuất: Java 双重比较
Bài viết được đề xuất: Objective-C 完成 block 导致额外的方法调用?
Bài viết được đề xuất: database - RESTful URI 是否应该公开数据库主键?
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com