我不明白为什么它发生在compareTo
使用CompareToBuilder
Apache Commons Lang 3 的方法上,我该如何解决?
课程如下:
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.CompareToBuilder;
@Data
@EqualsAndHashCode(of = {"segno", "causale", "importi"})
public class SaraReportAggregate implements Comparable<SaraReportAggregate> {
private final String segno;
private final String causale;
private final AggregatoSara importi = new AggregatoSara();
@Data
public static class AggregatoSara implements Comparable<AggregatoSara> {
private long importoTotale;
private long importoTotaleContanti;
private long numeroTotaleOperazioni;
private long numeroTotaleOperazioniContanti;
@Override
public int compareTo(AggregatoSara other) {
return new CompareToBuilder()
.append(other.importoTotale, this.importoTotale)
.append(other.numeroTotaleOperazioni, this.numeroTotaleOperazioni)
.append(other.importoTotaleContanti, this.importoTotaleContanti)
.append(other.numeroTotaleOperazioniContanti, this.numeroTotaleOperazioniContanti)
.toComparison();
}
}
@Override
public int compareTo(SaraReportAggregate other) {
return new CompareToBuilder()
.append(this.importi, other.importi)
.append(this.causale, other.causale)
.append(this.segno, other.segno)
.toComparison();
}
}
调用碰巧抛出Collections#sort(List)
的列表SaraReportAggregate
java.lang.IllegalArgumentException:比较方法违反了它的一般约定!
我应该怎么办?