Как мне правильно понять понятия полного имени и канонического имени?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как мне правильно понять понятия полного имени и канонического имени?

Сообщение Anonymous »

Мой вопрос возникает из примера в конце главы 6.7 Спецификации языка Java:

Разница между полное имя и каноническое имя можно
видеть в таком коде, как:

Код: Выделить всё

package p;
class O1 { class I {} }
class O2 extends O1 {}
Оба p.O1.I и p.O2.I являются полными именами, которые обозначают
член класса I, но только p.O1.I является его каноническим именем.

Я не совсем понимаю, почему p.O2.I не является каноническим именем.
Согласно 6.7:

Каждый примитивный тип, именованный пакет, класс верхнего уровня и
интерфейс верхнего уровня имеют каноническое имя:• Для каждого примитивного типа, именованного пакета, класса верхнего уровня и интерфейса верхнего
уровня каноническое имя совпадает с полным
именем.
Каждый класс-член, интерфейс-член и тип массива могут иметь
каноническое имя:
• Класс-член или интерфейс-член M, объявленный в другом класс или
интерфейс C имеет каноническое имя тогда и только тогда, когда C имеет каноническое
имя.

My понимание заключается в том, что p.O2.I является «классом-членом или интерфейсом M, объявленным в другом классе C», класс O2 является классом верхнего уровня, поэтому он имеет каноническое имя p.O2. Тогда согласно правилу,Почему p.O2.I не является каноническим именем?
Кроме того, я тоже не вижу разница между каноническим именем и полным именем (по сравнению с предыдущим цитируемым абзацем):

Каждый класс-член, интерфейс-член и тип массива могут иметь полностью
полное имя:
• Класс-член или интерфейс-член M из другой класс или интерфейс C
имеет полное имя тогда и только тогда, когда C имеет полное
имя.

Может ли кто-нибудь объяснить мне это подробно?
Спасибо, что читаете.

Подробнее здесь: https://stackoverflow.com/questions/789 ... d-canonica
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»