Как объявить константу на уровне класса в Java?

«Как объявить константу на уровне класса в Java?» — вопрос из категории Основы программирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Константа уровня класса объявляется с комбинацией модификаторов 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).