reflection - 我可以使用 kotlin.reflect 来获取字段的值吗

标签 reflection kotlin

class A{
     private var p:MyObj? = null
}

看来我无法通过A::p得到p, 或者我只能通过java获取它?

我的 kotlin 版本是

ext.kotlin_version = '1.1.4-2'

最佳答案

您无法获取它,因为当属性为 private 时,您在该类之外执行此操作。 。您在这里有几个选择:

  1. 创建一个返回 this::p 的函数(fun func(): KProperty0<MyObj?> = this::p)
  2. 创建该属性 public
  3. 使用反射。 这可能是最慢、性能最低且耦合非常紧密的选项。仅当您无法使用其他方法时才使用它。 您可以像这样使用 Kotlin 的反射:A::class.memberProperties.find { it.name == "p" } as KProperty1<A, MyObj?>

关于reflection - 我可以使用 kotlin.reflect 来获取字段的值吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46155190/

相关文章:

c# - 有没有办法调用通用的methodInfo?

android - 为什么当协程试图进入 Dispatchers.Main 时应用程序终止?

java - 在 Java 类中调用 Kotlin 挂起函数

string - Kotlin String.split,当分隔符位于引号内时忽略

java - android中cardview中的Clickable false无法工作

c# - 为什么开放泛型的基类型不开放?

c# - 在请求上使用反射使w3wp.exe进程崩溃

父类(super class)中带有default修饰符的Java反射访问方法

reflection - Go语言: Reading and casting bytes into struct fields

kotlin - 如何将 Long 类型的范围与 lambda 表达式相乘