Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ktSpRfMm 143 of 299 menu
◀ ▶

Члены класса в Kotlin

Ссылка ::class описывает тип целиком. Чтобы увидеть объявленные в классе свойства и функции, к ней подключают расширения из kotlin.reflect.full - отдельная часть библиотеки рефлексии Kotlin.

Список свойств, объявленных в теле класса, даёт memberProperties. У каждого элемента есть name - его и печатают по очереди:

import kotlin.reflect.full.memberProperties class Ledger(val code: String, val balance: Int) fun main() { for (prop in Ledger::class.memberProperties) { println(prop.name) } }

Функции, объявленные в классе, перечисляет memberFunctions. Имена снова берут из name, порядок следует объявлению в исходнике:

import kotlin.reflect.full.memberFunctions class Ledger(val code: String, val balance: Int) { fun isEmpty(): Boolean = balance == 0 fun label(): String = code } fun main() { for (fn in Ledger::class.memberFunctions) { println(fn.name) } }

Оба списка можно обойти в одном входе в программу - сначала свойства, затем функции:

import kotlin.reflect.full.memberFunctions import kotlin.reflect.full.memberProperties class Ledger(val code: String, val balance: Int) { fun isEmpty(): Boolean = balance == 0 } fun main() { val kind = Ledger::class for (prop in kind.memberProperties) { println("prop:" + prop.name) } for (fn in kind.memberFunctions) { println("fn:" + fn.name) } }

Опишите класс Route с двумя свойствами в первичном конструкторе и одной функцией без параметров. Выведите имена всех свойств и всех функций через рефлексию.

Сделайте класс Widget с одним строковым свойством и двумя функциями с разными именами. Напечатайте только имена функций, свойства в этот раз не выводите.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить