Соглашение о пакете Java - PullRequest
       8

Соглашение о пакете Java

5 голосов
/ 24 сентября 2010

Я разрабатываю проект Android, который в настоящее время имеет 4 пакета:

com.myapp.app.activities
com.myapp.app.db
com.myapp.app.ws
com.myapp.app.utils

Смогу ли я создать дополнительный пакет, который просто

com.myapp.app

Eclipse не позволяет мне создавать этот пакет. Он говорит мне, что пакет с таким именем уже существует.

Если я запускаю новый проект и создаю пакет с именем «com.testing.app», а затем создаю новый пакет с именем «com.testing.app.activities», он работает нормально.

Для разработчиков Android:

Что я хочу сделать, так это расширить класс Application и поместить его в отдельный пакет. Предположим, что com.myapp.app нельзя использовать. Какое название у этого нового пакета?

Ответы [ 4 ]

12 голосов
/ 24 сентября 2010

Eclipse не позволит вам создать этот пакет, потому что он уже существует.

Пакеты в Java представлены в файловой системе в виде иерархических папок: com.myapp.app.activities находится в папке com/myapp/app/activities. com/myapp/app уже существует, поэтому вы не можете создать этот пакет.

В Eclipse просто создайте новый класс, а в разделе «Пакет» укажите, что вы хотите создать его в пакете com.myapp.app. Это должно работать.

3 голосов
/ 24 сентября 2010

Eclipse по умолчанию скрывает пустые пакеты. В представлении проводника пакетов нажмите на маленькую стрелку справа вверху: Меню просмотра . Выберите Настроить вид . На вкладке Фильтры необходимо снять отметку Пустые пакеты . Теперь в проводнике пакетов будут видны пустые пакеты.

alt text

3 голосов
/ 24 сентября 2010

Пакет com.myapp.app уже существует.Вы можете создать класс с именем com.myapp.app.MyClass, вы увидите его прямо в пакете app.

Еще одна вещь, которую вы можете сделать, это изменить макет ваших пакетов с плоского макета на иерархический макет:

Example


Ресурсы:

0 голосов
/ 24 сентября 2010

Может показаться, что если я вручную помещу файл в каталог и обновлю проводник пакетов в Eclipse, появится новый пакет com.myapp.app

...