gpt4 book ai didi

Java/安卓/ Kotlin : Reflection on private Field and call public methods on it

转载 作者:太空宇宙 更新时间:2023-11-03 11:54:32 27 4
gpt4 key购买 nike

是否可以使用反射来访问对象的私有(private)字段并在该字段上调用公共(public)方法?

一个

class Hello {
private World word
}

class World {
public BlaBlaBla foo()
}

Hello h = new Hello()

World world = reflect on the h


// And then

world.foo()

最佳答案

可以使用反射使私有(private)字段可访问。以下示例(均用 Kotlin 编写)展示了它...

使用 Java 反射:

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

使用 Kotlin 反射:

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

关于Java/安卓/ Kotlin : Reflection on private Field and call public methods on it,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48158909/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com