Gegeben die folgende Fallklasse:
%Vor%Ich würde Folgendes erwarten:
%Vor%um etwas wie:
zu produzieren %Vor%Aber stattdessen erzeugt es:
%Vor% Warum werden die Primitiven aus den Generika gelöscht, anstatt wie java.lang.Integer.TYPE
und java.lang.Boolean.TYPE
behandelt zu werden, wie es bei den einfachen Feldern zu geschehen scheint?
Und gibt es eine Möglichkeit, die primitiven Typparameter von classOf[Foo]
?
Scala denkt, dass der generische Parameter für Grundelemente scala.<Primitive>
z. %Code%. Es speichert den Typ nicht in der Java-Klassendatei, obwohl es wohl möglich ist. (Oder nicht; hängt davon ab, ob zwischen scala.Int
und Int
unterschieden werden muss; unter der Haube ist die eingerahmte Form java.lang.Integer
, auch wenn der Compiler eine gute Arbeit macht und Sie glauben, dass es java.lang.Integer
ist. )
Wie auch immer, Scala hat seine eigenen Reflexionsfähigkeiten, die sich im Fluss befinden, aber mit 2.10 können Sie die Argumente der Int
-Typen wie folgt finden:
und du wirst etwas wie
bekommen %Vor%Tags und Links scala reflection generics