我有一个代码,我将Long
转换为BigInteger
,反之亦然。从Long
转换为BigInteger
时,我想确保没有NullPointerException
。所以代码看起来像这样:
(myModel.getLongVariable()!=null)?BigInteger.valueOf(myModel.getLongVariable()):**??**;
如果您看到 ?? 部分,我不确定要放在哪个默认值。 BigInteger specifications不提供new BigInteger()
之类的默认构造函数。
这里的每个人都建议最明显的选择,即使用BigInteger.ZERO
。但是零是其中一个值,并且会在其余流程中相应地进行。我基本上用xml写它,我正在探索,如果我可以把它变成空白而不是零
任何进一步的建议都表示赞赏。
答案 0 :(得分:3)
null
参数有两个明智的值:
BigInteger
提供您可以使用的常量BigInteger.ZERO
)null
null是您想要返回的“空白”最接近的内容:
return myModel.getLongVariable() != null
? BigInteger.valueOf(myModel.getLongVariable())
: null;
答案 1 :(得分:0)
假设myModel.getLongVariable()
正在返回Long
个对象:您可以使用BigInteger.ZERO
作为默认值:
myModel.getLongVariable()!=null)? BigInteger.valueOf(myModel.getLongVariable())
: BigInteger.ZERO;
BigInteger
类的其他常量字段是:
BigInteger.ONE
:BigInteger常量BigInteger.TEN
:BigInteger常数十。还有另一个常量,文档中没有提到,不让任何人知道:
BigInteger.TWO
:价值为2
,即private
修改强>
BigInteger规范不提供类似的默认构造函数 新的BigInteger()。
BigInteger
是一个公共课。谁阻止你扩展和实现这个构造函数?
public class CBigInteger extends BigInteger {
public CBigInteger()
{
super("-12345678944546"); // testing with a default value
}
}
BigInteger cBig = new CBigInteger();
System.out.println(cBig.toString()); // prints "-12345678944546"
答案 2 :(得分:-1)
我的建议:你给它一个默认值。
BigInteger mydefault = BigInteger.ZERO;