我需要将对象数组转换为Long/Integer。问题在于这些对象有时是BigIntegers,有时是BigDecimals,有时甚至是其他类型。是否有任何好的库可以实现这一点?
例如...
for (Object[] o : result) {
Long l = SomeClass.convertToLong(o[0]);
Integer i = SomeClass.convertToInt(o[1]);
}
我需要将对象数组转换为Long/Integer。问题在于这些对象有时是BigIntegers,有时是BigDecimals,有时甚至是其他类型。是否有任何好的库可以实现这一点?
例如...
for (Object[] o : result) {
Long l = SomeClass.convertToLong(o[0]);
Integer i = SomeClass.convertToInt(o[1]);
}
使用 Number 可以实现很多功能:
Long l = ((Number) object).longValue();
Integer i = ((Number) object).intValue();
对于BigInteger
和BigDecimal
的情况,您可以将它们(以及所有数值原始包装类)转换为Number
并获取longValue()
(请注意当long
范围溢出时要小心)。
如果它们属于其他类型,则需要规则来进行转换。您想要转换的是什么“其他类型”?
java.lang.Number类及其相关类可以很好地完成大部分工作。如果您需要更多支持来处理null和原始类型,而无需编写检查和条件语句,请查看Apache Commons-Lang库,特别是NumberUtil.class。这些是成熟的、常用的和有良好文档的库。