3 回答

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
我會(huì)采用一個(gè)參數(shù)來表示zeroComparator 所表示的類型的值,并讓調(diào)用者傳遞它。
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) 有限,您可以將零值存儲(chǔ)在映射中。

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊
如果您不想傳遞零值,則可以添加調(diào)用 main 函數(shù)的方法。這使調(diào)用者不必知道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貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
或者,如果您不想為每個(gè)數(shù)字定義 0,并且您總是使用nullOrNonPositive
數(shù)字,您可以這樣做:
private boolean nullOrNonPositive(Number value) { return isNull(value) || new BigDecimal(value.toString()).signum() <= 0; }
添加回答
舉報(bào)