亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將不同類型的可比較數量與零進行比較

將不同類型的可比較數量與零進行比較

精慕HU 2023-05-10 17:02:08
我有這樣的代碼:    BigDecimal n1= BigDecimal.TEN;    Long n2= 15L;    nullOrNonPositive(n1);    nullOrNonPositive(n2);和方法代碼:    private boolean nullOrNonPositive(Comparable value) {        return isNull(value) || value.compareTo(BigDecimal.ZERO) <= 0;    }我確實得到了 an Exceptionthat Longcannot compared to BigDecimal,這很明顯。有沒有辦法使方法 generic 和 compare Comparable,它總是一個數字(但不同的類)為零?
查看完整描述

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) 有限,您可以將零值存儲在映射中。


查看完整回答
反對 回復 2023-05-10
?
心有法竹

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);

}


查看完整回答
反對 回復 2023-05-10
?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

或者,如果您不想為每個數字定義 0,并且您總是使用nullOrNonPositive數字,您可以這樣做:

private boolean nullOrNonPositive(Number value) {
    return isNull(value) || new BigDecimal(value.toString()).signum() <= 0;
}


查看完整回答
反對 回復 2023-05-10
  • 3 回答
  • 0 關注
  • 142 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號