Java-анализ идентификаторов с точками

Какие правила использует Java для разрешения идентификаторов с точками?

Например:

import Foo.Bar;

class Foo
{
    public static class Bar
    {
    };
};

Теперь Foo.Bar может относятся либо к импортированному классу Bar , либо к классу, определенному в исходном коде. Как разрешить такую ​​неоднозначность?

Я пробовал этот случай, поэтому я знаю, что происходит на практике, но я ищу нечто большее; Я хочу знать основные правила. Например, если Foo.Bar существует в исходном файле, могу ли я по-прежнему ссылаться на импортированный класс Foo.Bar.Baz ? Что, если Foo.Bar - это пакет, а также класс? Если компилятор не может найти Foo.Bar в ближайшем Foo , он просто откажется или будет искать другие Foo , пока не найдет либо заканчивается, либо находит подходящий?

(Между прочим, я нашел соответствующий бит в спецификации языка. Это мало помогает ...)

6
задан David Given 13 June 2011 в 14:26
поделиться