Вызов защищенного статического Java-метода из Scala - PullRequest
6 голосов
/ 15 декабря 2010

У меня есть библиотека с некоторыми классами Java. Один класс имеет несколько protected static методов, которые, как я понимаю, вроде как ООП-нет-нет, но я не могу изменить его код. Предполагая, что у меня есть класс Scala, который подклассирует вышеупомянутый класс Java, как я могу назвать его защищенные статические члены?

1 Ответ

20 голосов
/ 15 декабря 2010

См. Часто задаваемые вопросы - Совместимость Java :

Это известное ограничение Scala: нет понятия «статичные» члены в Скале. Вместо этого Скала лечит статические члены класса Y как члены одноэлементного объекта Y ( сопутствующий объект класса Y). когда наследуя от этого класса, можно доступ только к защищенным членам класса Да, но не могу получить доступ к защищенным членам объекта Y.

Скала не может имитировать статическая защита без ущерба для целостность объектной модели Scala в фундаментальный путь, так что это не происходит изменить. Чтобы обойти это ограничение, нужно создать реализация включающего класса с кодом Java, который инкапсулирует все доступ к защищенной статической внутренней класс.

Подробнее см. билет # 1806 информация и конкретный пример ограничение и его обходной путь .

...