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

Я использую 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) return FilenameUtils.separatorsToSystem(customPath) } fun File(name: String) : File = File(name).apply { createNewFile() } } 

Однако он не может найти этот новый метод в классе, где я его использую

введите описание изображения здесь

В чем проблема?

    Прежде чем вы сможете использовать этот метод расширения, его необходимо импортировать.

     import PluginExtensions.normalizeFilePath 

    Функция расширения используется только для объекта PluginExtensions. В любом месте за пределами этого объекта вам нужен импорт, чтобы сделать расширение видимым. Альтернативой будет определение расширения на уровне пакета. Это сделает ваше расширение видимым для всего пакета.

    Взгляните на документацию для расширений. В частности, область расширений .

    Вам нужно импортировать функцию в файл, в который вы его вызываете. Функция расширения не находится в классе, который вы распространяете. Он расположен в том месте, где вы его определили.

    Напишите это в файле, в котором вы используете функцию:

     import PluginExtensions.normalizeFilePath 
    Intereting Posts
    Связывание модели домена с полями с нулевым значением в ItemViewModel Как сделать двойной сигнал с помощью ToneGenerator Можно ли использовать Allatori в исходном коде Kotlin? Загрузка классов, созданных Kotlin во время выполнения с Java Как заставить Джексона использовать параметры по умолчанию для Kotlin для отсутствующих значений? Как рисовать линии с помощью drawLine () Kotlin – ключевое слово «in» – для чего используется? ClassNotFoundException с ароматами продукта и Kotlin Kotlin: Как можно получить доступ к функциям расширения внутри одного типа извне? Скомпилировать проект с помощью Realm Plateform Kotlin: Как асинхронно ждать список одинаковых методов? Как создать заголовок вложенного / разделенного столбца с помощью TornadoFx? Вкус продукта: найден дубликат класса Как установить заголовок NavigationView с помощью Anko DSL? Как использовать джексон для десериализации в коллекциях Котлина