Java / Android / Kotlin:关于私人领域的反思和调用公共方法
是否可以使用reflection来访问对象的私人领域,并调用该领域的公共方法?
即
class Hello { private World word } class World { public BlaBlaBla foo() } Hello h = new Hello() World world = reflect on the h // And then world.foo()
使用reflection可以使private
领域accessible
。 下面的例子(都写在Kotlin )显示它…
使用Javareflection:
val hello = Hello() val f = hello::class.java.getDeclaredField("world") f.isAccessible = true val w = f.get(hello) as World println(w.foo())
使用Kotlinreflection:
val hello = Hello() val f = Hello::class.memberProperties.find { it.name == "world" } f?.let { it.isAccessible = true val w = it.get(hello) as World println(w.foo()) }