Java BigInteger的默认值
我有一个从Java BigInteger的默认值,java,biginteger,Java,Biginteger,我有一个从Long转换为biginger的代码,反之亦然。从Long转换为biginger时,我想确保没有NullPointerException。代码如下所示: (myModel.getLongVariable()!=null)?BigInteger.valueOf(myModel.getLongVariable()):**??**; 如果您看到?部分,我不确定要在那里放置什么默认值。不提供默认构造函数,如new biginger() 这里的每个人都建议使用最明显的选项,即使用biginge
Long
转换为biginger
的代码,反之亦然。从Long
转换为biginger
时,我想确保没有NullPointerException
。代码如下所示:
(myModel.getLongVariable()!=null)?BigInteger.valueOf(myModel.getLongVariable()):**??**;
如果您看到?部分,我不确定要在那里放置什么默认值。不提供默认构造函数,如new biginger()
这里的每个人都建议使用最明显的选项,即使用biginger.ZERO
。但零是其中的一个值,在流的其余部分也会相应地变为零。我基本上是用xml编写的,我正在探索是否可以将其设置为空白而不是零
任何进一步的建议都将受到欢迎。我的建议:您给它一个默认值
BigInteger mydefault = BigInteger.ZERO;
null
参数有两个合理的返回值:
- 零(
提供了可用于该值的常数)biginger
null
return myModel.getLongVariable() != null
? BigInteger.valueOf(myModel.getLongVariable())
: null;
假设
myModel.getLongVariable()
正在返回一个Long
对象:您可以使用BigInteger.ZERO
作为默认值:
myModel.getLongVariable()!=null)? BigInteger.valueOf(myModel.getLongVariable())
: BigInteger.ZERO;
该类的其他常量字段包括:
biginger.ONE
:biginger常量ONEbiginger.TEN
:biginger常量TENbiginger.TWO
:值为2
,它是私有的
编辑:
BigInteger规范不提供像这样的默认构造函数
新的BigInteger()
biginger
是一个公共类。谁在阻止您扩展和实现此构造函数
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"
如果它实际上是
长的
,则它不能是空的
。对象引用可以是null
,但long
是一个原语,因此默认情况下它初始化为零。具体取决于要返回的内容。但是您有一些常量,如biginger.ZERO
。long通常初始化为0
。让你的binginger
取一个0
值?我为这个错误道歉。它是包装类longit如果您要将此默认值用于乘法或除法运算,您将更喜欢使用biginger.ONE
而不是biginger.ZERO
。使用biginger.ZERO
。我可以在java文档中读取它们。谢谢你在这里粘贴。但,零是其中一个值,在我的应用程序的其余流程中会相应地变为零。我基本上是用xml编写的,我正在探索是否可以将其设置为空白而不是零。我提到了一个常数,您在阅读文档时不会知道:P。我看到您在阅读了这里的答案后编辑了您的问题。我不知道是谁投了反对票,但你的版本没有打上标记,可能会误导投反对票的人。再次感谢您,零、一和二都会导致正确的值,我希望避免这些值。@G.V,您不能使用TWO
,因为它是私有对象。我已经更新了答案。看一看没什么区别。超级(“-123456789446”)。。。仍然需要一个默认的数值。“我想要的是一片空白。”波希米亚人,我怀疑是OP本人。但不确定:)使用null似乎是目前的选择,信任我的应用程序中的null检查。不过,我会保留这个问题,以便有更多的建议。