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

时间:2018-10-05 14:34:15

标签: 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检索值?

1 个答案:

答案 0 :(得分:2)

怎么样呢?

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

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