gpt4 book ai didi

java - 如果 java 抽象类 "Number"的任何对象等于零

转载 作者:搜寻专家 更新时间:2023-10-31 19:55:00 27 4
gpt4 key购买 nike

我正在尝试制作一个通用函数,它接受任何类型的 Number 并在该数字等于零时有条件地执行某些操作。我希望任何人都能够将任何扩展 Number 的类传递给它(BigDecimal、BigInteger、Byte、Double、Float、Integer、Long 或 Short)

到目前为止,我已经尝试使用 instanceof 找出数字的类型,然后将其与等效类型进行比较

public static boolean isZero(Number number) {
if (number instanceof BigDecimal) {
return BigDecimal.ZERO.equals(number);
} else if (number instanceof BigInteger) {
return BigInteger.ZERO.equals(number);
} else if (number instanceof Byte) {
return new Byte((byte) 0).equals(number);
} else if (number instanceof Double) {
return new Double(0).equals(number);
} else if (number instanceof Float) {
return new Float(0).equals(number);
} else if (number instanceof Integer) {
return new Integer(0).equals(number);
} else if (number instanceof Long) {
return new Long(0).equals(number);
} else if (number instanceof Short) {
return new Short((short) 0).equals(number);
}
return false;
}

这行得通,但是它很长而且很麻烦。有什么办法可以简化这个吗?

最佳答案

不幸的是,这在一般情况下是不可能的; “零”甚至不能保证由一般的 Number 表示(因为您可以设计一个“PositiveInteger”类,它只表示正数并且仍然遵守 Number > 类规范)。

尝试将值转换为任何其他类可能会导致截断或舍入,这会使您的测试无效,因此不幸的是,使用 Number 类本身的任何方法都可能会产生不正确的结果。

关于java - 如果 java 抽象类 "Number"的任何对象等于零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25252441/

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