3 回答
TA贡献1798条经验 获得超7个赞
我会采用一个参数来表示zeroComparator 所表示的类型的值,并让调用者传递它。
private static <T> boolean nullOrNonPositive(Comparable<T> value, T zero) {
return isNull(value) || value.compareTo(zero) <= 0;
}
称之为
nullOrNonPositive(n1, BigDecimal.ZERO); //false
nullOrNonPositive(n2, 0L); //false
nullOrNonPositive(-1L, 0L); //true
nullOrNonPositive(2, 0)); //true
nullOrNonPositive("1", "0"); //false
nullOrNonPositive("0", "0"); //true
如果可能的类型集 ( T) 有限,您可以将零值存储在映射中。
TA贡献1866条经验 获得超5个赞
如果您不想传递零值,则可以添加调用 main 函数的方法。这使调用者不必知道zero
每种类型的值是什么。
private static <T> boolean nullOrNonPositive(Comparable<T> value, T zero) {
return isNull(value) || value.compareTo(zero) <= 0;
}
private boolean nullOrNonPositive(BigDecimal value) {
return nullOrNonPositive(value, BigDecimal.ZERO)
}
private boolean nullOrNonPositive(Long value) {
return nullOrNonPositive(value, 0L);
}
TA贡献1851条经验 获得超3个赞
或者,如果您不想为每个数字定义 0,并且您总是使用nullOrNonPositive
数字,您可以这样做:
private boolean nullOrNonPositive(Number value) { return isNull(value) || new BigDecimal(value.toString()).signum() <= 0; }
添加回答
举报