Warum gibt es BigInteger (String) aber keinen BigInteger (long)?

7

Um einen String in BigInteger zu konvertieren, verwenden Sie in Java den Konstruktor new BigInteger(String) , aber um ein int / long zu konvertieren, verwenden Sie die Factory-Funktion BigInteger.valueof(long) , warum ist das?

    
Morad 03.10.2014, 20:24
quelle

2 Antworten

11

Dort ist eigentlich ein BigInteger(long) -Konstruktor, aber er ist privat. Das Javadoc auf der Factory-Methode bietet Informationen darüber, warum:

  

Diese "statische Factory-Methode" wird anstelle einer (langen)   Konstruktor, weil es die häufig verwendete Wiederverwendung ermöglicht   BigIntegers.

    
Krease 03.10.2014, 20:30
quelle
20

@Morad finden Sie die Antwort in der Dokumentation: JavaDoc von BigInteger.valueOf (long) :

  

Diese "statische Factory-Methode" wird anstelle einer (langen)   Konstruktor, weil es die häufig verwendete Wiederverwendung ermöglicht   BigIntegers.

Erklärt : BigInteger.valueOf(long) macht genau das, was Sie vom BigInteger(long) -Konstruktor erwarten würden, und es ist (oder sollte es sein) effizienter .

    
Alboz 03.10.2014 20:29
quelle