Какие правила использует Java для разрешения идентификаторов с точками?
Например:
import Foo.Bar;
class Foo
{
public static class Bar
{
};
};
Теперь Foo.Bar
может относятся либо к импортированному классу Bar
, либо к классу, определенному в исходном коде. Как разрешить такую неоднозначность?
Я пробовал этот случай, поэтому я знаю, что происходит на практике, но я ищу нечто большее; Я хочу знать основные правила. Например, если Foo.Bar
существует в исходном файле, могу ли я по-прежнему ссылаться на импортированный класс Foo.Bar.Baz
? Что, если Foo.Bar
- это пакет, а также класс? Если компилятор не может найти Foo.Bar
в ближайшем Foo
, он просто откажется или будет искать другие Foo
, пока не найдет либо заканчивается, либо находит подходящий?
(Между прочим, я нашел соответствующий бит в спецификации языка. Это мало помогает ...)