2016-02-09 2 views
10

Могу ли я ссылаться на поля интерфейса Java из Kotlin? У меня есть этот Java интерфейс:Ссылка на статические поля интерфейса Java в Kotlin

public interface BaseColumns { 
    public static final String _ID = "_id"; 
    public static final String _COUNT = "_count"; 
} 

И я реализую его в Котлин:

object UserEntry : BaseColumns { 
    // some code 
} 

Я получаю неразрешенные ссылки когда я пытаюсь UserEntry._ID. Как я могу получить доступ к _ID? Я что-то упускаю? Благодаря!

ответ

13

В Kotlin, в отличие от Java, статические элементы интерфейсов не выводятся и не могут быть вызваны в подклассы без определения имени интерфейса.

Вы должны указать _ID через BaseColumns: BaseColumns._ID будет работать.

Это, по-видимому, отличается для классов: это не квалифицированное имя статического члена базового класса, но член все еще не унаследован.

+0

Следующий вопрос: в этом конкретном случае нет причин для реализации интерфейса BaseColumns справа? Поскольку он содержит только две статические переменные-члены? – Joris

+1

@ Джорис, вы правы, нет необходимости. – hotkey

Смежные вопросы