的Java /安卓/科特林:在私人领域的思考与调用它的公共方法

TeeTracker:

难道possiable使用反射来访问对象的私有字段,并呼吁这一领域的一个公共的方法呢?

class Hello {
   private World word
}

class World {
   public BlaBlaBla foo()
}

Hello h = new Hello()

World world = reflect on the h


// And then 

world.foo()
s1m0nw1:

这可能使privateaccessible使用反射。下面的例子(包括写在科特林)显示它...

使用Java的反思:

val hello = Hello()
val f = hello::class.java.getDeclaredField("world")
f.isAccessible = true
val w = f.get(hello) as World
println(w.foo())

使用科特林反思:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章