Betrachten Sie den folgenden Code zuzugreifen:Wie ein Feldwert über Reflexion (Scala 2.8)
class Foo(var name: String = "bar")
Jetzt versuche ich, den Wert und die richtige Art die es durch Reflexion zu erhalten:
val foo = new Foo
val field = foo.getClass.getDeclaredField("name")
field.setAccessible(true)
//This is where it doesn't work
val value = field.get(????)
Ich habe Dinge wie field.get (foo) ausprobiert, aber das gibt nur ein java.lang.Object, aber keinen String zurück. Im Grunde brauche ich den richtigen Typ, weil ich eine Methode darauf aufrufen will (zB toCharArray).
Was ist der vorgeschlagene Weg, das zu tun?
Ich reparierte die fehlende getClass, das war nur ein Versehen. Ich frage mich, wie man die Besetzung tun, ohne vorher zu wissen, was es ist. Wenn ich alles über die Klasse wusste, die ich behandeln muss, würde ich Reflexion nicht brauchen ... Danke für die Vorschläge! – soc
Sie können das Objekt mit einem Muster wie "Wert Übereinstimmung {Fall s: String =>/* Machen Sie etwas mit einer Zeichenfolge */Fall _ =>/* machen Sie etwas anderes * /}' Muster übereinstimmen. Ich weiß nicht, ob ich verstehe, was du machen willst. – gerferra