Warum werden Scala-Primitive nicht als Typparameter in der Java-Reflektion angezeigt?

8

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] ?

abzurufen     
David Moles 23.12.2013, 18:55
quelle

1 Antwort

7

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:

%Vor%

und du wirst etwas wie

bekommen %Vor%     
Rex Kerr 23.12.2013, 20:00
quelle

Tags und Links