Gegeben ist eine Java-Methode, die java.lang.Object
s für eine gegebene Zeichenfolge zurückgibt. Ich möchte diese Methode in eine Scala-Methode einbetten, die die zurückgegebenen Instanzen in einen Typ T
konvertiert. Wenn die Konvertierung fehlschlägt, sollte die Methode None
zurückgeben. Ich suche nach etwas ähnlichem:
(Wie) Kann dies mithilfe der Scala-Reflektions-API erreicht werden? Mir ist durchaus bewusst, dass die Signatur von convert
möglicherweise geändert werden muss.
Das ist ein ClassTag
wenn für:
Es kann als Extraktor verwendet werden, um gleichzeitig den richtigen Typ zu testen und zu werfen.
Beispiel:
%Vor% Bearbeiten : Beachten Sie jedoch, dass ein ClassTag
nicht Box-Primitive automatisch auspackt. So würde zum Beispiel convert[Int]("a")
niemals funktionieren, weil die Java-Methode AnyRef
zurückgibt, convert[java.lang.Integer]("a")
usw. für andere primitive Typen.
Miles 'Antwort mit Typeable
scheint sich automatisch um diese Randfälle zu kümmern.
Tags und Links scala reflection shapeless