Кроме того, не станет ли концепция общих секретов устаревшей реализацией модулей? Разве модули не позволяют вам предоставлять специальные пути доступа между пакетами, в то же время предотвращая доступ к нему внешнего кода? Что-то вроде более широкой версии частного доступа к пакетам, которая позволяет проекту совместно использовать код внутри себя, не подвергая реализацию другим проектам?

ся, чтоSharedSecrets а такжеJavaLangAccess классы изsun.misc Пакет был удален в Java 9.

Есть ли какие-либо замены в Java 9 для функциональности, предоставляемой этими классами?

 manouti06 окт. 2017 г., 21:58
Что именно вы пытаетесь сделать с помощью этих классов?
 Alan Bateman07 окт. 2017 г., 09:59
Внутренние newStringUnsafe и getEnumConstantsShared никогда не должны использоваться кодом вне базовых классов JDK. Поддерживаемые API - это, конечно, String (char []) и Class :: getEnumConstants.
 Clashsoft06 окт. 2017 г., 22:00
С помощьюnewStringUnsafe или жеgetEnumConstantsShared методы, например.

Ответы на вопрос(2)

Решение Вопроса

jdk.internal.misc пакет.

Один из способов получить к ним доступ - использовать опцию

--add-exports <source-module>/<package>=<target-module>(,<target-module>)*

для вашего случая использования как:

--add-exports java.base/jdk.internal.misc=your.module

Запись: - Отказ отJEP-261: модульная система -

--add-exports а также--add-opens варианты должны использоваться с большой осторожностью. Вы можете использовать их для получения доступа к внутреннему API библиотечного модуля или даже к самому JDK, но вы делаете это на свой страх и риск:Если этот внутренний API-интерфейс будет изменен или удален, произойдет сбой вашей библиотеки или приложения.

 Naman06 окт. 2017 г., 22:46
@VGR Они могут быть удалены в будущих выпусках, я верю. Добавлен отказ от ответственности от JEP, чтобы указать это.
 Naman07 окт. 2017 г., 09:56
@AlanBateman Я поддерживаю второй пункт, как уже отмечалось VGR. Следовательно, добавили примечание к ответу также. И я только что предложилв одну сторону о том, как это может быть достигнуто, не определяя, что необходимо / должно соблюдаться. И, без сомнения, я был бы рад ответить на этот вопрос, который мог бы отразить детали замены упомянутых классов и их функциональности.
 VGR06 окт. 2017 г., 22:41
Этот пакет, кажется,незадокументированный, Есть ли гарантия, что он будет представлен в будущих выпусках Java? Или разработчики берут на себя такой же риск, как и при использовании пакетов sun. *?
 Alan Bateman07 окт. 2017 г., 09:54
Разработчики не должны использовать sun. *, Jdk.internal. * И другие внутренние API JDK. Поэтому я не думаю, что будет хорошей идеей предлагать отправителю использовать новое расположение классов внутренних общих секретов.

Ошибка # JDK-8137056

В рамках подготовки к JEP 160,SharedSecrets и дружественные интерфейсы должны быть удалены из sun.misc и находится в по-настоящему закрытом пакете

И теперь они доступны наjdk.internal.misc

Переместите SharedSecrets и друзей на jdk.internal.misc

 Mani07 окт. 2017 г., 08:27
Спрашивать о перемещенном пакете jdk.internal.misc?
 Ravi07 окт. 2017 г., 08:26
@ManiGrover, если вы спрашиваете оsun.misc тогда да. И, насколько я понимаю, их не будет на самом деле.
 HesNotTheStig26 сент. 2018 г., 23:57
Кроме того, не станет ли концепция общих секретов устаревшей реализацией модулей? Разве модули не позволяют вам предоставлять специальные пути доступа между пакетами, в то же время предотвращая доступ к нему внешнего кода? Что-то вроде более широкой версии частного доступа к пакетам, которая позволяет проекту совместно использовать код внутри себя, не подвергая реализацию другим проектам?
 Ravi07 окт. 2017 г., 08:30
@ManiGrover Вы должны, который упоминается в другом ответе.
 Mani07 окт. 2017 г., 08:19
Означает ли это, что для этой упаковки не требуется экспорт?

Ваш ответ на вопрос