¿Por qué la clase BigInteger de Java no tiene un constructor capaz de tomar un literal numérico? [cerrado]

8

¿Por qué la clase BigInteger de Java no tiene un constructor capaz de tomar un literal numérico? Cada vez que uso BigIntegers, y muchas veces simplemente pienso en ellos, me pregunto esto.

¿Qué razón podrían haber tenido los diseñadores de Java para excluir uno a pesar de la abrumadora conveniencia de uno si existiera?

Wug
fuente
¿Porque puede llamar fácilmente toStringa un tipo integral? Y hacerlo requeriría múltiples sobrecargas, una por tipo integral.
Finalizado el
1
Creo que un constructor que tome un largo sería suficiente, ya que un literal numérico puede convertirse automáticamente en un largo. Java le permitirá convertir un tipo a un tipo más preciso (no eficiente, derp) implícitamente. Tiene sentido que las personas que quieran construir uno a partir de un tipo de coma flotante tengan que al menos lanzarlo, pero no veo por qué obligamos a las personas que quieren hacer un gran intento con un valor de 3sufrimiento.
Wug
@kevincline: no digo que elimine el constructor de cadenas, pregunto por qué no hay uno largo.
Wug

Respuestas:

19

La respuesta se encuentra en el JavaDoc deBigInteger.valueOf(long) :

Este "método de fábrica estático" se proporciona con preferencia a un longconstructor ( ) porque permite la reutilización de BigIntegers de uso frecuente.

En otras palabras: BigInteger.valueOf(long)hace exactamente lo que le pide al BigInteger(long)constructor hipotético que haga, excepto que es (o al menos puede ser) un poco más eficiente.

Joachim Sauer
fuente
3
Excelente. Tener algunas preciosas representantes de Internet. +1
Robert Harvey