Подтвердить что ты не робот

Как вы определяете атрибут package-private * * в Scala?

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

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

Итак, как вы создаете свойство private-private в Scala?

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

4b9b3361

Ответ 1

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

Ответ 2

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

http://www.scala-lang.org/node/10488

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

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