Articles of удлинительные методы

Метод Kotlin inline не видим, если не расширять класс

Я столкнулся с проблемой в библиотеке, которую я пишу для коллекций нулевого мусора. Я написал функцию myFunction но у меня есть проблема, когда я НЕ могу вызвать функцию, если я не RandomClass класс (в данном случае) RandomClass package com.charlatano fun main(args: Array<String>) { val hello = RandomClass<String>() hello.myFunction { // Unresolved reference: myFunction } } […]

метод расширения для класса утилиты из внешней библиотеки

Я использую FilenameUtils из apache commons У меня было такое действие в коде val customPath = FilenameUtils.getPath(source) + DEFAULT_SEPARATOR + FilenameUtils.getBaseName(source) val resultPath = FilenameUtils.separatorsToSystem(customPath) Я решил сделать это в методе расширения. Я переместил его в отдельный класс. object PluginExtensions { fun FilenameUtils.normalizeFilePath(source: String) : String { val customPath = FilenameUtils.getPath(source) + DEFAULT_SEPARATOR + FilenameUtils.getBaseName(source) […]

Использовать метод / свойство расширения по всему миру

В Kotlin вы можете определить методы и свойства расширения для существующих классов: operator inline fun Vector2.plus(other: Vector2) = Vector2(x + other.x, y + other.y) Это позволяет сделать это: val result = Vector2(1.1f, 2.3f) + Vector2(2f, 4f) Есть ли способ сделать это расширение глобальным, так что мне не нужно импортировать его в каждый класс, который использует […]

Как вызвать методы расширения вне класса, в котором они определены?

Вот минимальный пример, демонстрирующий проблему: abstract class Base { abstract fun String.extension(x: Char) } class Derived : Base() { override fun String.extension(x: Char) { // Calling lots of methods on String, hence extension method println("${first()} $length ${last()} ${firstOrNull { it == x }} …") } } Вызов метода расширения из Java тривиален: Base o = […]

Intereting Posts
Kotlin / Java – тестирование данных базы данных REST API Как я могу сделать IntelliJ уважающим каталог выхода плагина Maven Kotlin? Java не разрешает окончательные методы по умолчанию .. но делает Котлин? Из документации kotlin мне не ясно, как оператор Как создать функцию расширения в Kotlin, которая работает с классом? Программировать триггерную кнопку HTML в Java Кинжал инъекции не работает в Котлин Android: выполнение Kotlin завершилось неудачно, пытаясь использовать Databinding Правильно ли написана документация Котлина? Как указать параметризованные дженерики для свойства Котлина? Какие языки программирования поддерживают реализацию неявного интерфейса путем делегирования? Java / Kotlin шифрует ключ AES с открытым и открытым ключом Чрезвычайно медленный процесс автозаполнения и анализа кода для проектов Kotlin в Intellij IDEA Как вернуть исключение зависимостей модуля в Intellij (после ложной проверки кода) Панель «Призрачная» нижняя панель навигации, когда фрагмент загружается в домашней деятельности