Почему я не могу получить доступ к переменной, объявленной в классе, который реализует интерфейс 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