Ответ
Да, интерфейсы в Java могут содержать константы. Все поля, объявленные в интерфейсе, неявно (по умолчанию) являются public static final, даже если эти модификаторы не указаны явно.
Пример:
interface ApplicationConstants {
// Эти поля автоматически public static final
String APP_NAME = "MyApp";
int MAX_CONNECTIONS = 100;
double PI = 3.14159;
}
Важные правила:
- Обязательная инициализация. Константа должна быть сразу проинициализирована.
interface MyInterface { int VALUE; // ОШИБКА компиляции: = constant expression expected } - Соглашение по именованию. Имена констант принято писать в
UPPER_SNAKE_CASE. - Наследование. Любой класс, реализующий интерфейс, получает доступ к его константам по имени (например,
ApplicationConstants.APP_NAME).
Замечание: Хотя технически это возможно, современные best practices рекомендуют выносить константы в отдельные final-классы (например, AppConfig) или использовать enum, чтобы не «загрязнять» интерфейсы, основная цель которых — определение поведения.