generics - 如何通过泛型从Singleton对象检索值

标签 generics kotlin

我正在尝试创建一个函数,该函数可以接受任何单例对象,并使用值打印其属性。

样例代码:

object MyObject {
    val text = "Hello World"
}

inline fun <reified T: Any> printValues() = T::class
    .declaredMemberProperties
    .forEach {
        println(it.name + "=" + it.value) // value doesn't exist
    }


/* RUN */
fun main(args: Array<String>) {
    printValues<MyObject>()
}

在kotlin中,是否可以通过像这样的通用方式从MyObject检索值?

最佳答案

这样的事情怎么样:

inline fun <reified T : Any> getObjectValues() = T::class
    .declaredMemberProperties
    .map { it.name to it.get(T::class.objectInstance!!) }

基本上,您需要获取T的实例,以便可以调用get

关于generics - 如何通过泛型从Singleton对象检索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52667972/

相关文章:

c# - 当还有专门的服务类型时,使用 CaSTLe Windsor 的流畅接口(interface)在装饰器链中注册组件?

Java 泛型 "reverse relationship"(和 JPA)

android - 导入 com.google.android.gms.auth.api.Auth 的未解决引用

java - 如何使用 Kotlin DSL 创建 Fat JAR?

java - Java 中的泛型类型和通配符

java - 如何从 Java 中的泛型类型反序列化 JSON 对象?

android - 如何在 Android 中使用 Kotlin 从 NavigationView 的 headerLayout 中指定的布局访问 View

java - 如何抑制特定的 Kotlinc/Javac 编译器警告?

java - 在 UBUNTU 中从 VS Code 运行 Kotlin 会得到 kotlinc : not found

java - Integer 类型引用 String 类型值