In letzter Zeit habe ich viel mit Reflektion gearbeitet und diese kleine Hilfsmethode implementiert. Ich war überrascht zu finden, dass die erste Version nicht kompiliert, aber das letzte tut.
Kompiliert nicht:
%Vor%Kompiliert und funktioniert gut:
%Vor%Zwei Fragen: Was ist daran falsch? Gibt es einen besseren Weg, dies zu tun?
Hier ist der Kompilierungsfehler vom ersten:
%Vor% Der Rückgabetyp von getClass()
ist Class<?>
.
In Ihrem Beispiel weisen Sie Class<?>
auf Class<T[]>
zu (in der return-Anweisung), was falsch ist, Sie brauchen einen Cast.
Dies wird gut kompiliert:
%Vor% In Ihrem zweiten Beispiel verwenden Sie den Raw-Typ Class
, was gut funktioniert - der Casting-Raw-Typ scheint implizit zu sein. Sie erhalten jedoch eine Compilerwarnung, da dies eine entmutigte Technik ist.
Wenn Sie es richtig als Class<?>
parametrisieren, benötigen Sie auch die Besetzung.
Tags und Links java reflection generics