Как вы определяете атрибут package-private * * в Scala?
В Java можно создавать пакетно-частные интерфейсы. Глядя на них с помощью javap, вы видите, что им не хватает "публичной" видимости.
В Scala вы можете объявить черту как private [package] или protected [package], но, глядя в нее с помощью javap, она все еще является общедоступной.
Итак, как вы создаете свойство private-private в Scala?
В то время как компилятор Scala уважает видимость, моя проблема в том, что мой API, вероятно, будет доступен из Java тоже, и я не хочу раскрывать свою внутреннюю реализацию Java.
Ответы
Ответ 1
Невозможно создать частные модификаторы Java-пакета с помощью Scala.
Однако вы можете свободно смешивать файлы Java и Scala в проекте Scala. Таким образом, самым простым решением является создание Java-класса/интерфейса, а затем его расширение в Scala.
Ответ 2
Я считаю, что это ответ на ваш вопрос
http://www.scala-lang.org/node/10488
private имеет тонко особый статус в языковых спецификациях обоих Scala и Java. Ознакомьтесь с обсуждением частных и квалифицированных частный в разделе Модификаторы SLS. Короче говоря, частный - это аналогично Java private, тогда как private [foo] не имеет байт-код, но просто требует проверки времени компиляции.
Я не верю, что вы действительно можете сделать частный пакет приватным после его компиляции в байт-код.