Ответ
Да, но с важным ограничением.
- Top-level интерфейс (объявленный в отдельном файле) не может быть
private. Это противоречит его назначению — определять публичный контракт. - Вложенный (nested) интерфейс внутри класса или другого интерфейса может быть объявлен как
private(начиная с Java 9). Такой интерфейс доступен только внутри своего объемлющего класса.
Пример приватного вложенного интерфейса:
public class DataProcessor {
// Приватный интерфейс, скрытый внутри класса
private interface InternalValidator {
boolean validate(String data);
}
private class LengthValidator implements InternalValidator {
@Override
public boolean validate(String data) {
return data != null && data.length() > 0;
}
}
public void process(String input) {
InternalValidator validator = new LengthValidator();
if (validator.validate(input)) {
// ... обработка
}
}
}
// InternalValidator НЕ доступен вне класса DataProcessor
Применение: Приватные интерфейсы используются для сокрытия внутренней логики и организации кода внутри одного класса.