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常量ONE
  • biginger.TEN
    :biginger常量TEN
  • 还有一个常数,文档中没有提到,因为它不让任何人知道:

    biginger.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检查。不过,我会保留这个问题,以便有更多的建议。