Warum verfügt die BigInteger-Klasse von Java nicht über einen Konstruktor, der ein numerisches Literal verwenden kann? [geschlossen]
8
Warum verfügt die BigInteger-Klasse von Java nicht über einen Konstruktor, der ein numerisches Literal verwenden kann? Jedes Mal, wenn ich BigInteger benutze und oft nur an sie denke, frage ich mich das.
Welchen Grund hätten die Designer von Java haben können, einen auszuschließen, trotz der überwältigenden Bequemlichkeit von einem, sollte es existieren?
Weil Sie leicht toStringeinen ganzzahligen Typ aufrufen können ? Dies würde mehrere Überlastungen erfordern - eine pro integralen Typ.
Oded
1
Ich denke, ein Konstruktor, der eine lange dauert, würde ausreichen, da ein numerisches Literal automatisch in eine lange umgewandelt werden kann. Mit Java können Sie einen Typ implizit in einen genaueren (nicht effizienten, derp) Typ umwandeln. Es ist irgendwie sinnvoll, wenn Leute, die einen aus einem Gleitkommatyp erstellen wollen, ihn zumindest umsetzen müssen, aber ich verstehe nicht, warum wir Leute zwingen, die eine große Ganzzahl mit einem Wert von 3Leiden machen wollen.
Wug
@kevincline: Ich sage nicht, entfernen Sie den String-Konstruktor, ich frage, warum es keinen langen gibt.
Diese "statische Factory-Methode" wird einem ( long) -Konstruktor vorgezogen, da sie die Wiederverwendung häufig verwendeter BigInteger ermöglicht.
Mit anderen Worten: BigInteger.valueOf(long)Tut genau das, was Sie vom hypothetischen BigInteger(long)Konstruktor verlangen , außer dass es etwas effizienter ist (oder zumindest sein kann).
toString
einen ganzzahligen Typ aufrufen können ? Dies würde mehrere Überlastungen erfordern - eine pro integralen Typ.3
Leiden machen wollen.Antworten:
Die Antwort liegt im JavaDoc von
BigInteger.valueOf(long)
:Mit anderen Worten:
BigInteger.valueOf(long)
Tut genau das, was Sie vom hypothetischenBigInteger(long)
Konstruktor verlangen , außer dass es etwas effizienter ist (oder zumindest sein kann).quelle