Как получить значение из объекта Singleton через дженерики - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь создать функцию, которая может принимать любой одноэлементный объект и печатать его свойства со значениями.

Пример кода:

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 голосов
/ 05 октября 2018

Примерно так:

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

По сути, вам нужно получить экземпляр T, чтобы вы могли вызвать get

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...