为什么有BigInteger(String)但没有BigInteger(long)?

Mor*_*rad 7 java biginteger factory-pattern

在Java中,要将String转换为BigInteger,您可以使用构造函数,new BigInteger(String)但要转换为int/long,您使用的是工厂函数BigInteger.valueof(long),为什么会这样?

Alb*_*boz 20

@Morad你可以在文档中找到答案:BigInteger.valueOf(long)的JavaDoc:

这种"静态工厂方法"优先于(长)构造函数提供,因为它允许重用常用的BigIntegers.

解释:BigInteger.valueOf(long)完全符合您对BigInteger(long)构造函数的期望 ,并且它(或应该)更高效.


Kre*_*ase 11

实际上一个BigInteger(long)构造函数,但它是私有的.工厂方法的javadoc提供了有关原因的信息:

这种"静态工厂方法"优先于(长)构造函数提供,因为它允许重用常用的BigIntegers.