Почему я не могу получить доступ к переменной, объявленной в классе, который реализует интерфейс Java, из Scala?

в Java у меня есть класс, который реализует интерфейс:

AlertDialog implements DialogInterface

Если некоторые переменные объявлены внутри интерфейса, я мог бы получить к ним доступ:

AlertDialog.BUTTON_POSITIVE

но в Scala вышеуказанная строка не компилируется. Кажется, он спрятан. Есть ли способ получить доступ к этим переменным в Scala без создания нового объекта или выполнения чего-либо еще?

2 ответов


чтобы дать немного больше деталей: причина, по которой они не могут быть доступны, заключается в том, что Джордж говорит о статических членах, определенных на интерфейсе. Scala не имеет статических членов-вместо этого создается object, который является регулярным классом с одной реализацией. Когда вы расширяетесь из интерфейса Java, Scala будет расширять только нестатические члены, потому что статические рассматриваются как находящиеся в companion object. Сопутствующий объект называется так же, как и интерфейс, поэтому вы может получить доступ к нему как DialogInterface.BUTTON_POSITIVE.


в Scala нет способа получить доступ к этим переменным из AlertDialog класс, но вы можете использовать сам интерфейс в качестве объекта для доступа к ним.

таким образом, вы можете напрямую получить доступ к переменным из интерфейса:

DialogInterface.BUTTON_POSITIVE