Warum ist es falsch, Typparameter im Konstruktor einer generischen Klasse (Java) anzugeben?
Ich lerne gerade etwas über Generika in Java aus einem Lehrbuch, in dem es um eine Klasse gehtGenericStack<E>
implementiert mit einemArrayList<E>
.
Seit dem Erstellen eines Stapels von Zeichenfolgen verwenden Sie
GenericStack<String> = new GenericStack<String>()
ode
GenericStack<String> new GenericStack<>()
daher sollte der Konstruktor von @ nicGenericStack
definiert werden alspublic GenericStack<E>()
, oderpublic GenericStack<>()
? Die Antwort ist nein. Es sollte als @ definiert werdpublic GenericStack()
.
Warum ist das? Natürlich kann der Konstruktor den Typ leicht aus der Klassendeklaration ableiten, aber angesichts der Ausführlichkeit von Java bin ich etwas verwirrt, warum das<E>
oder einfach das<>
Formalismus ist hier komplett beseitigt.