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()) }