Объявление поля статического интерфейса в Котлине

Можно ли написать эквивалент Java

interface Foo { public static final INSTANCE = new Foo {}; } 

в Котлине?

Если Foo был классом, я мог бы использовать:

 class Foo { companion object { @JvmField val INSTANCE = object : Foo() {} } } 

но с интерфейсом он дает ошибку:

JvmField нельзя применить к свойству, определенному в сопутствующем объекте интерфейса

@JvmStatic не работает.

Для меня работает следующее.

 interface Foo { fun bar() companion object { val INSTANCE = object : Foo { // There are no () An interface cannot be instantiated. override fun bar() { //Do something ... } } } } 

Затем в вашей деятельности просто вызов Foo.INSTANCE возвращает экземпляр в Foo .

Intereting Posts
Использование отражения для передачи и изменения примитива без использования массива Kotlin Kapt: java.lang.IllegalStateException: endPosTable уже установлен запустить Android-версию 2.3.3 проект kotlin в android studio 3.0.1 после обновления Kotlin: получить расширение файла со стандартной функциональностью Может ли kotlin определить динамический метод, когда class init? Kotlin lateinit корреспондент java IDEA показывает проект дважды в дереве названные функции против лямбда-рефлексии Как использовать класс Kotlin в классе java? Не вызывайте setOnClickListener для AdapterView Клиент сокета Netty wss отключает соединение Не удается получить доступ к внутренним компонентам из тестового источника с помощью Android Как получить значение свойства с отражением Многие небольшие модули или несколько больших модулей для лучшей производительности? Создать метод с общим параметром для повторных действий