考虑以下代码:
class Foo(var name: String = "bar")
现在我尝试通过反射获取它的值和正确的类型:
val foo = new Foo
val field = foo.getClass.getDeclaredField("name")
field.setAccessible(true)
//This is where it doesn't work
val value = field.get(????)
我尝试了像 field.get(foo) 这样的东西,但它只返回一个 java.lang.Object 但没有字符串。基本上我需要正确的类型,因为我想调用它的方法(例如 toCharArray)。
建议的方法是什么?
正如其他人提到的,反射方法返回Object
所以你必须施放。您可能最好使用 Scala 编译器为字段访问创建的方法,而不是必须更改私有字段的可见性。 (我什至不确定名称私有字段是否保证与访问器方法的名称相同。)
val foo = new Foo
val method = foo.getClass.getDeclaredMethod("name")
val value = method.get(foo).asInstanceOf[String]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)