Por que a classe BigInteger do Java não tem um construtor capaz de pegar um literal numérico? [fechadas]

8

Por que a classe BigInteger do Java não tem um construtor capaz de pegar um literal numérico? Toda vez que uso BigIntegers, e muitas vezes penso apenas neles, imagino isso.

Que razão os designers de java poderiam ter tido para excluir um, apesar da conveniência esmagadora de um que ele existisse?

Wug
fonte
Porque você pode facilmente chamar toStringum tipo integral? E isso exigiria várias sobrecargas - uma por tipo integral.
Oded
1
Eu acho que um construtor demorando muito seria suficiente, pois um literal numérico pode ser convertido automaticamente para um longo. Java permitirá converter um tipo para um tipo mais preciso (não eficiente, derp) implicitamente. Faz sentido que as pessoas que desejam construir uma a partir de um tipo de ponto flutuante precisem, pelo menos, convertê-la, mas não vejo por que forçamos as pessoas que querem fazer um biginteger com um valor de 3sofrimento.
Wug
@kevincline: Não estou dizendo para remover o construtor de string, estou perguntando por que não existe um longo.
Wug

Respostas:

19

A resposta está no JavaDoc deBigInteger.valueOf(long) :

Esse "método estático de fábrica" ​​é fornecido de preferência a um longconstrutor ( ) porque permite a reutilização de BigIntegers usados ​​com freqüência.

Em outras palavras: BigInteger.valueOf(long)faz exatamente o que você pede ao BigInteger(long)construtor hipotético , exceto que é (ou pelo menos pode ser) um pouco mais eficiente.

Joachim Sauer
fonte
3
Excelente. Tenha alguns representantes preciosos da Internet. 1
Robert Harvey