¿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?
¿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.
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.
toString
a un tipo integral? Y hacerlo requeriría múltiples sobrecargas, una por tipo integral.3
sufrimiento.Respuestas:
La respuesta se encuentra en el JavaDoc de
BigInteger.valueOf(long)
:En otras palabras:
BigInteger.valueOf(long)
hace exactamente lo que le pide alBigInteger(long)
constructor hipotético que haga, excepto que es (o al menos puede ser) un poco más eficiente.fuente