не используйте com.sun.xml.internal.*?

Этот верный оператор:

пакет com.sun.xml.internal является внутренним пакетом, как имя предполагает. Пользователи не должны писать код, который зависит от внутренних классов реализации JDK. Такие классы являются внутренними деталями реализации JDK и при внесении изменений без уведомления

Один из моих коллег использовал один из классов в его коде, который заставил задачу javac в сбое Муравья компилировать наш проект, поскольку компилятор не мог найти класс. В ответе от Sun/Oracle говорится, что это - ожидаемое поведение компилятора, поскольку пользователь не должен использовать пакет.

Вопрос состоит в том почему классы в пакете, обнародованном во-первых?

Спасибо,

Sarah

8
задан Asaph 19 May 2010 в 05:24
поделиться

2 ответа

Классы Sun в JDK имеют префикс sun.* и не являются частью общедоступного поддерживаемого интерфейса, поэтому их следует использовать с осторожностью. Из Sun FAQ:

Классы, которые Sun включает в состав Java 2 SDK, Standard Edition, попадают в группы пакетов java., javax.., org.* и sun. Все пакеты, кроме sun. являются стандартной частью платформы Java и будут поддерживаться в будущем. В целом, пакеты такие как sun., которые находятся за пределами платформы Java, могут быть различными на разных платформах ОС (Solaris, Windows, Linux, Macintosh и т.д.) и могут изменяться в любое время без уведомления с версиями SDK (1.2, 1.2.1, 1.2.3 и т.д.). Программы которые содержат прямые обращения к sun. packages не являются 100% Pure Java. В другими словами:

Пакеты java., javax. и org.*. документированные в Java 2 Platform Standard Edition API Specification составляют официальный, поддерживаемый публичный интерфейс.

Если программа Java напрямую вызывает только API в этих пакетах, она будет работать на всех Java-совместимых платформах, независимо от базовой платформы.

Пакеты sun.* не являются частью поддерживаемого общедоступного интерфейса.

Программа Java, которая напрямую обращается в пакеты sun.*, не гарантируется не гарантируется работа на всех Java-совместимых платформах. Фактически, такая программа не гарантируется работа даже в будущих версиях на той же платформе.

7
ответ дан 5 December 2019 в 17:35
поделиться

Это потому, что модификаторы видимости Java (особенно на уровне типа, где есть только две опции) в настоящее время не обладают степенью детализации, чтобы достичь той видимости, на которую вы намекаете. Я не знаю специфики внутреннего класса или классов, которые вы используете, но в основном, делая классы частными, делали бы их непригодными для использования по назначению, поэтому единственным другим вариантом был открытый.

2
ответ дан 5 December 2019 в 17:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: