Java-Klassenart

8

Ich habe einen Block Code, der funktioniert und ich wollte fragen, was genau hier passiert?

%Vor%

--- hinzugefügt ---

Der Platzhalter " <?> " ist der Teil, der für mich verwirrend ist. Warum sollte dies verwendet werden, anstatt es zu verwenden (Generika)?

    
pn1 dude 14.11.2008, 18:43
quelle

6 Antworten

12

Das bedeutet, dass es sich um eine Klasse beliebigen Typs handeln kann. ? ist ein Platzhalter, der die Menge aller Typen oder "any" bezeichnet. Das kannst du später tun

%Vor%

oder

%Vor%

Wenn Sie keine Generika in Java kennen, lesen Sie Ссылка

Was das Warum betrifft, so könnte ich meinen, dass Sie Generika überall verwenden und Ihr Code nicht mit älteren Java-Versionen kompatibel ist, oder vielleicht ein paar Trigger-Happy-IDEs zum Schweigen bringen. Und ja,

%Vor%

und

%Vor%

sind gleichwertig.

    
Vinko Vrsalovic 14.11.2008, 18:46
quelle
4

Auch die generische Version

%Vor%

entspricht ziemlich genau der Raw-Type-Version,

%Vor%

Der Hauptunterschied besteht darin, dass der letztere mit Java-Versionen kompatibel sein wird, die keine Generika wie Java 1.4 unterstützen.

    
John in MD 14.11.2008 20:17
quelle
3

Klasse & lt; T & gt; bedeutet, dass Klasse seit JDK 1.5 durch den Typ definiert wird, den die Klasse definiert. Eine Möglichkeit, darüber nachzudenken, ist, dass Class eine Factory zum Erstellen von Instanzen seines Typs ist.
Genauer gesagt, eine Klasse & lt; T & gt; Erstellt Instanzen des Typs T aus der Class.newInstance () -Methode.

Ab JDK 1.5 wird von der Java-Sprachspezifikation empfohlen, dass Sie keine rohen Typen verwenden sollten. Es wird daher dringend empfohlen, dass Sie bei einer Klasseninstanz unbekannten Typs als "Klasse & lt;? & Gt;" und nicht nur "Klasse". Natürlich, wenn Sie den Typ oder etwas gebunden kennen, können Sie einige Vorteile finden, wenn Sie ihn spezifizieren.

    
Alex Miller 15.11.2008 03:17
quelle
2

Klasse oder Klasse & lt;? & gt; funktioniert genauso gut. Ein Grund, Letzteres zu verwenden, ist, einige Warnungen loszuwerden, die die IDE oder der Compiler auf Sie werfen würden, wenn Sie das erste Formular verwenden.

    
John Nilsson 14.11.2008 19:36
quelle
0

Ich bezweifle, dass das Hausaufgaben sind, da ich nie in einer Klasse gewesen bin, die über Reflexion gesprochen hat.

Aber das ist eine einfache Null-Zuweisung. Es macht nichts.

    
Pyrolistical 14.11.2008 18:45
quelle
0

Class ist eine parametrisierbare Klasse, daher können Sie die Syntax Class verwenden, wobei T ein Typ ist. Wenn Sie Class schreiben, deklarieren Sie ein Class-Objekt, das beliebigen Typs sein kann (? Ist ein Platzhalter). Der Klassentyp ist ein Typ, der Metainformationen über eine Klasse enthält.

Es ist immer gut, sich auf einen generischen Typ zu beziehen, indem Sie seinen spezifischen Typ angeben, indem Sie die Klasse verwenden, die Sie beachten (Sie wissen, dass Class parametrisierbar ist), aber Sie beschränken Ihren Parameter nicht auf a spezifischer Typ.

Referenz zu Generika und Wildcards: Ссылка

Referenz zu Klassenobjekt und -reflexion (das Merkmal der Java-Sprache, das verwendet wird, um sich selbst zu untersuchen): Ссылка

    
Ali Yeganeh 15.03.2017 15:25
quelle

Tags und Links