В Java вы не можете расширить конечный класс, но в Kotlin вы можете написать метод расширения для таких конечных классов
Я думаю, вы предполагаете, что методы расширения использовали наследование, которое не является. Это скорее статический c метод, замаскированный под kotlin синтаксис c сахар. Например, посмотрите на приведенный ниже простой метод расширения:
String.removeSpace(): String {
return this.replace(" ", "")
}
Вы можете рассматривать его как эквивалент следующего java кода.
static String removeSpace(String input) {
return input.replace(" ", "")
}
Что делает kotlin, вот оно предоставляет оболочку сверху, так что, используя this
, вы можете получить экземпляр вызывающего. Объединив это с возможностью Kotlin определять функцию как первоклассный гражданин, вы можете написать такую элегантную вещь:
fun String.removeSpace() = this.replace(" ", "")