Jes*_*ose 9 java apache-commons
我了解了Comparable一个类必须实现compareTo方法的接口.我正在使用该方法的项目:
public class EmployeeAssignmentTotal implements Comparable<EmployeeAssignmentTotal>, Serializable {
private Employee employee;
private int total;
....
public int compareTo(EmployeeAssignmentTotal other) {
return new CompareToBuilder()
.append(employee, other.employee)
.append(total, other.total)
.toComparison();
}
Run Code Online (Sandbox Code Playgroud)
CompareToBuilder这里有什么好处?它是如何employee与total属性相互作用的?
我确实阅读过javadocs,但是我无法使用构造函数和多个appends 来做他们正在做的事情的头或尾.这个问题是否表明意图不明确和零研究?
cha*_*aos 12
我试图弄清楚CompareToBuilder是如何工作的,我发现了这篇文章,但我对答案不满意.例如,toComparison方法应该返回一个负整数,一个正整数或零,因为构建器已将"左手"侧判断为小于,大于或等于"右手"侧.
所以我的问题是追加属性的顺序如何影响比较.要回答这个问题,我唯一能做的就是检查源代码,我发现了这个:
public CompareToBuilder append(int lhs, int rhs) {
if (this.comparison != 0) {
return this;
}
this.comparison = ((lhs > rhs) ? 1 : (lhs < rhs) ? -1 : 0);
return this;
}
Run Code Online (Sandbox Code Playgroud)
所以,基本上发生的事情是它将根据你追加它们的顺序比较属性.在您的代码示例中,将首先评估"employee".如果左侧属性的评估小于或大于右侧,则忽略总计.
仅当"employee"评估为相等时,才会评估属性"total".
本课程旨在帮助您构建compareTo()方法.想象一下,你的课程中只有2个字段 - 手动编码比较方法可能非常麻烦.
CompareToBuilder正在为您做这件事 - 每个append()方法都在添加一个新的比较,并且所有比较都被&&编辑.
所以您发布的代码equals()在员工对象上运行total.
| 归档时间: |
|
| 查看次数: |
6080 次 |
| 最近记录: |