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; }
添加回答
舉報