Ответ
Константа уровня класса объявляется с комбинацией модификаторов static и final. По соглашению, её имя пишется в UPPER_SNAKE_CASE.
Синтаксис:
[модификатор_доступа] static final тип_данных ИМЯ_КОНСТАНТЫ = значение;
Практический пример:
public class ApplicationConstants {
// Публичная константа для общего использования
public static final String DATABASE_URL = "jdbc:mysql://localhost:3306/app_db";
// Приватная константа для внутреннего использования в классе
private static final int MAX_CONNECTION_POOL_SIZE = 10;
// Константа с сложным типом (массив). Для защиты от изменений
// часто возвращают копию или используют Collections.unmodifiableList
private static final String[] SUPPORTED_LOCALES = {"en", "ru", "es"};
public static String[] getSupportedLocales() {
return SUPPORTED_LOCALES.clone(); // Возвращаем копию для безопасности
}
}
// Использование в другом классе:
public class App {
public void connect() {
// Обращение к публичной константе через имя класса
String url = ApplicationConstants.DATABASE_URL;
System.out.println("Connecting to: " + url);
}
}
Объяснение ключевых слов:
static: Означает, что поле принадлежит самому классу, а не его экземплярам. В памяти существует только одна копия.final: Запрещает изменение значения после первоначальной инициализации. Для ссылочных типов нельзя изменить саму ссылку, но состояние объекта может быть изменяемым (если это не immutable-класс).- Комбинация
static finalсоздаёт константу времени компиляции, если значение примитивно или является строкой (String).