Обычно, чтобы создать новый пакет, вы создаете папку с соответствующим названием, и во всех ее
.java файлах добавляете в начале строчку с названием пакета, вида
package full.dir.path;. Этого вполне достаточно для работы.
Однако, дополнительно вы можете добавить в пакет его объявление – файл
package-info.java. Несмотря на то, что это .java-файл, это
не объявление класса. В названии класса дефисы запрещены, так что неоднозначности не возникнет.
Минимальное содержимое файла
package-info.java – всё та же строка
package full.dir.path;. Такой файл не несет практической пользы. Есть две вещи, которые можно в него добавить, чтобы польза появилась.
Первое –
документация пакета. Javadoc-комментарий будет использоваться генератором документации. Пример –
описание пакета java.lang. Его исходник вы можете найти в файле
java/lang/package-info.java.
Второе возможное применение –
аннотации уровня пакета. Для этого аннотация должна иметь
Target PACKAGE.
Например, некоторые пакеты Spring Framework помечены аннотацией
@NonNullApi.
Подробно объявления пакетов описаны в
главе 7.4.1 спецификации.