【发布时间】:2022-01-10 17:24:13
【问题描述】:
在以下方法中,我尝试使用 compareTo() 来比较 getErclasCurrErWtPerValNo() 是 Integer 和 getErclasHrWorkEligNo() 是 BigDecimal。我没有任何运气铸造或使用 intValue()。如何解决?
public Integer getErclasCurrErWtPerValNo() {
return this.erclasCurrErWtPerValNo;
}
public BigDecimal getErclasHrWorkEligNo() {
return this.erclasHrWorkEligNo;
}
if (StringUtils.isEmpty(erpp.getEbErClasses().getErclasHrWorkEligNo())) {
errors.rejectValue(fieldPrefix + "ebErClasses.erclasHrWorkEligNo", getSectionName(),
"Minimum Working Hours Per Week is required.");
} else if (erpp.getEbErClasses().getErclasCurrErWtPerValNo().compareTo(erpp.getEbErClasses().getErclasHrWorkEligNo())){
errors.rejectValue(fieldPrefix + "ebErClasses.erclasHrWorkEligNo", getSectionName(),
"Hours can not be below " + erpp.getEbErClasses().getErclasHrWorkEligNo().intValue() + ".");
}
【问题讨论】:
-
您的类可能被错误地声明为 Comparable
。您需要显示 getErclasCurrErWtPerValNo返回的值的类定义。您显示的代码还不够 -
@Michael 谢谢迈克尔,我现在添加这些
-
哦,对了。我现在明白了。可能更好地反转比较。 Integer 只能与 Integer 进行比较,但您不能将 BigDecimal 转换为 Integer 而不会丢失小数部分。
erpp.getEbErClasses().getErclasHrWorkEligNo().compareTo(new BigDecimal(erpp.getEbErClasses().getErclasCurrErWtPerValNo())) -
@Michael 现在它说必需的类型 boolean 提供的 int
-
查看该方法的文档。 docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html 它返回一个三态。小于、等于或大于。您将它放在
if中,它需要以下两种状态之一:真或假。如果要查看是否相同,请在其后添加== 0。
标签: java integer bigdecimal compareto