Geben Sie das Casting mit dem Typparameter ein

8

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:

%Vor%

(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.

    
fynn 17.08.2013, 12:44
quelle

2 Antworten

12

Das ist ein ClassTag wenn für:

%Vor%

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.

    
gourlaysama 17.08.2013, 13:02
quelle
15

Sie könnten formlos versuchen, Typeable ,

%Vor%     
Miles Sabin 17.08.2013 13:02
quelle

Tags und Links