Пакеты в Java: управление пространствами имён, доступом и организацией кода
Пакеты (packages) в Java используются для предотвращения конфликтов имён, контроля доступа, упрощения поиска и использования классов, интерфейсов, перечислений и аннотаций.
Пакет — группировка связанных типов, обеспечивающая защиту доступа и управление пространством имён.
Стандартные пакеты
java.lang— фундаментальные классы (автоматически импортируется).java.io— классы ввода-вывода.
Создание пакета
- Выбрать имя (обычно в нижнем регистре).
- Добавить оператор
package имя;первой строкой в каждом исходном файле. - Один package на файл, применяется ко всем типам в файле.
- Без package — класс попадает в default package (не рекомендуется).
Компиляция с пакетами
javac -d Destination_folder file_name.java
Создаётся папка с именем пакета, куда помещаются .class файлы.
Пример: пакет animals
// Animal.java
package animals;
interface Animal { void eat(); void travel(); }
// MammalInt.java
package animals;
public class MammalInt implements Animal {
public void eat() { System.out.println("Mammal eats"); }
public void travel() { System.out.println("Mammal travels"); }
public static void main(String args[]) {
new MammalInt().eat(); new MammalInt().travel();
}
}
Компиляция: javac -d . Animal.java MammalInt.java → создаётся папка animals/ с .class файлами.
Ключевое слово import
Для использования класса из другого пакета:
- Полное имя:
payroll.Employee - Импорт всего пакета:
import payroll.*; - Импорт конкретного класса:
import payroll.Employee;
import пишется после package и перед объявлением класса.
Структура директорий
- Имя пакета становится частью полного имени класса:
vehicle.Car. - Структура папок должна соответствовать пакету:
vehicle/Car.java(Windows:vehicle\Car.java).
Стандарт: обратное доменное имя компании (com.apple.computers).
// Dell.java
package com.apple.computers;
public class Dell { }
Путь: com/apple/computers/Dell.java. При компиляции с -d . создаётся зеркальная структура для .class файлов.
CLASSPATH
Полный путь к корню классов. Компилятор и JVM ищут .class файлы по пути: CLASSPATH/имя_пакета.
- Несколько путей:
;(Windows) или:(Unix). - По умолчанию: текущая директория + JAR платформы.
Управление CLASSPATH
| Действие | Windows | Unix (Bourne) |
|---|---|---|
| Показать | set CLASSPATH | echo $CLASSPATH |
| Очистить | set CLASSPATH= | unset CLASSPATH; export CLASSPATH |
| Установить | set CLASSPATH=C:\users\jack\java\classes | CLASSPATH=/home/jack/java/classes; export CLASSPATH |
java
- Пакеты в Python: структура, импорт и лучшие практики
- Ключевое слово final в Java: переменные, методы и классы
- Оператор instanceof в Java: полное руководство с примерами
- Статические вложенные классы в Java: использование, отличия и примеры
- Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
- Паттерн Singleton в Java: как реализовать и безопасно использовать
- Рефлексия в Java: инспекция классов, методов и полей во время выполнения
- Освоение Java ObjectOutputStream: сериализация, методы и практические примеры
- Освоение Java Generics: создание переиспользуемого, типобезопасного кода
- Мастерство файловых операций в Java с java.io: создание, чтение, запись и удаление