Как вы определяете личный пакет * trait * в Scala? - PullRequest
13 голосов
/ 24 августа 2011

В Java можно создавать частные интерфейсы пакетов.Глядя на них с помощью javap, вы видите, что им не хватает «публичной» видимости.

В Scala вы можете объявить признак как private [package] или protected [package], но, взглянув на javap, онвсе еще общедоступен.

Итак, как создать частную черту пакета в Scala?

Хотя компилятор Scala учитывает видимость, моя проблема в том, что мой API, вероятно, будет доступен и из Java.и я не хочу подвергать свою внутреннюю реализацию Java.

Ответы [ 2 ]

13 голосов
/ 24 августа 2011

Я считаю, что это ответ на ваш вопрос

http://www.scala -lang.org / узел / 10488

private имеет слегка особый статус в спецификациях языка обоих Скала и Ява. Проверьте обсуждение частного против квалифицированного личное в разделе Модификаторы SLS. Короче говоря, частный так же, как Java private, тогда как private [foo] не помечен как private в байт-код, но просто включает проверку доступа во время компиляции.

Я не верю, что вы действительно можете сделать пакет trait закрытым, как только он скомпилирован в байт-код.

10 голосов
/ 24 августа 2011

Невозможно создать частные модификаторы пакетов Java с помощью Scala. Однако вы можете свободно смешивать файлы Java и Scala в проекте Scala. Поэтому самое простое решение - создать класс / интерфейс Java, а затем расширить его в Scala.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...