Столкновение имен между пакетом и классом.Ошибка в Eclipse или Javac? - PullRequest
5 голосов
/ 10 марта 2012

Для этого исходного кода ...

enter image description here

... Eclipse сообщает о следующей ошибке:

Может только типимпортироватьсяpkg.a преобразуется в пакет

... в то время как Suns javac прекрасно его компилирует.

Аналогичная ситуация, если я пытаюсь полностью квалифицировать класс pkg.aнапример:

enter image description here

Отчеты Eclipse ...

pkg.a не могут быть преобразованы в тип

... в то время как Suns javac прекрасно его компилирует.


Кажется, что Eclipse предпочитает интерпретировать идентификатор как пакет над именем класса, тогда как javac делает прямо противоположное.Итак, это ошибка в Eclipse или в javac?

(Ссылка на спецификацию языка, очевидно, является плюсом.)

Ответы [ 2 ]

3 голосов
/ 10 марта 2012

Это определенно ошибка Eclipse:

6.4.2.Затемнение

Простое имя может встречаться в тех случаях, когда оно потенциально может интерпретироваться как имя переменной, типа или пакета.В этих ситуациях правила §6.5 указывают, что переменная будет выбрана в предпочтении к типу, и что тип будет выбран в предпочтении к пакету.Таким образом, иногда бывает невозможно сослаться на видимое объявление типа или пакета через его простое имя.Мы говорим, что такое объявление скрыто.

Ясно, что для класса и пакета допустимо иметь одно и то же имя.В противном случае JLS скажет, что класс, скрывающий пакет, является недопустимым ... не то, чтобы этот класс использовался в предпочтениях.что вы решили игнорировать соглашения Java по именованию.Не ожидайте большого сочувствия ...

1 голос
/ 10 марта 2012

Это соглашение по стилю, присваивающее классам имя, начинающееся с заглавной буквы, а пакеты с заглавной буквы;это решило бы вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...