Понимание синтаксиса документации - PullRequest
0 голосов
/ 19 февраля 2019

Я нахожусь над экземпляром ClassName::javaClass в моем проекте kotlin / android - и вижу предварительный просмотр документации для javaClass:

public val <T : Any> T.javaClass: Class<T>

Извинения, если это основной вопрос, но какможно ли перевести вышеперечисленное?И есть ли какой-нибудь ресурс для меня, чтобы прочитать, который даст мне краткое изложение этого типа синтаксиса документации?

1 Ответ

0 голосов
/ 19 февраля 2019

public val <T : Any> T.javaClass: Class<T>

Это свойство расширения.Работает в основном так же, как функция расширения (фактически компилятор генерирует функцию получения расширения для любого типа, унаследованного от Any).

Более простой пример, без обобщений:

val String.withPrefix: String
    get() = "_$this"

fun test() {
    println("Hello".withPrefix) // prints "_Hello"
}

Еще один пример- теперь для универсального типа:

val <T: Number> T.hexValue: String
    get() = convertToHex(this)

fun main(args: Array<String>) {
    val number: Double = 10.0
    println("Hex value of $number is ${number.hexValue}")
}

Конструкция, которую вы спрашиваете, довольно странная, поскольку соединяет как универсальную, так и расширенную функцию.Но, как вы можете видеть, на самом деле это просто очень простая конструкция - выглядит просто странно.

Подробнее о расширениях: https://kotlinlang.org/docs/reference/extensions.html#extension-properties

Подробнее о генериках: https://kotlinlang.org/docs/reference/generics.html

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