BigInteger的默认值

时间:2013-11-12 19:56:44

标签: java biginteger

我有一个代码,我将Long转换为BigInteger,反之亦然。从Long转换为BigInteger时,我想确保没有NullPointerException。所以代码看起来像这样:

(myModel.getLongVariable()!=null)?BigInteger.valueOf(myModel.getLongVariable()):**??**;

如果您看到 ?? 部分,我不确定要放在哪个默认值。 BigInteger specifications不提供new BigInteger()之类的默认构造函数。

这里的每个人都建议最明显的选择,即使用BigInteger.ZERO。但是零是其中一个值,并且会在其余流程中相应地进行。我基本上用xml写它,我正在探索,如果我可以把它变成空白而不是零

任何进一步的建议都表示赞赏。

3 个答案:

答案 0 :(得分:3)

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类的其他常量字段是:

  1. BigInteger.ONE :BigInteger常量
  2. BigInteger.TEN :BigInteger常数十。
  3. 还有另一个常量,文档中没有提到,不让任何人知道:

    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;