Scala Class.getFields

8

Für Zwecke meiner App muss ich in der Lage sein, eine Liste von Feldern eines type (keine Instanz) und Typen dieser Felder in der Laufzeit herauszufinden. Bis jetzt konnte ich nur eine Liste von Methoden einer Fallklasse bekommen, die getters mit classOf[MyCaseClass].getMethods und nichts Nützliches von einer einfachen Klasse enthielt. Fehle ich etwas? Gibt es irgendwelche Reflexionsbibliotheken für diese Zwecke? Wie ist das richtig gemacht?

    
Nikita Volkov 10.10.2011, 04:18
quelle

2 Antworten

17

Mit Scala 2.10 Reflexion:

%Vor%

Die zurückgegebenen Symbole enthalten alle Typinformationen, z. B .:

%Vor%     
Nikita Volkov 10.10.2011, 08:49
quelle
6

Vielleicht möchten Sie sich dieses Dokument zur Reflektion von Scala ansehen . getMethods ist eine Methode aus der Java-Reflektion. Was kannst du dort nicht finden? Aus dem Javadoc :

  • String getName (): Gibt den Namen der von diesem Method-Objekt dargestellten Methode als String zurück.
  • Class [] getParameterTypes (): Gibt ein Array von Klassenobjekten zurück, die die formalen Parametertypen in der Deklarationsreihenfolge der von diesem Method-Objekt dargestellten Methode darstellen.
  • Klasse getReturnType (): Gibt ein Klassenobjekt zurück, das den formalen Rückgabetyp der Methode repräsentiert, die von diesem Method-Objekt dargestellt wird.

Sie können mehr über Java-Reflektion lesen.

Beachten Sie, dass aufgrund von Löschung nicht alle Typinformationen zur Laufzeit verfügbar sind.

    
schmmd 10.10.2011 05:05
quelle

Tags und Links