gpt4 book ai didi

java - 将不同类型的可比较数量与零进行比较

转载 作者:行者123 更新时间:2023-12-02 01:23:14 25 4
gpt4 key购买 nike

我有这样的代码:

    BigDecimal n1= BigDecimal.TEN;
Long n2= 15L;

nullOrNonPositive(n1);
nullOrNonPositive(n2);

方法代码:

    private boolean nullOrNonPositive(Comparable value) {
return isNull(value) || value.compareTo(BigDecimal.ZERO) <= 0;
}

我确实得到了一个 ExceptionLong 无法与 BigDecimal 进行比较,这是非常明显的。有没有办法使该方法通用并将始终为数字(但不同类)的Comparable与零进行比较?

最佳答案

我将采用一个参数来表示比较器所表示的类型的值,并让调用者传递它。

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

关于java - 将不同类型的可比较数量与零进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57331021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com