Я согласен, что это, как правило, редко, но мне нравится использовать внутренние классы в интерфейсах для сервисов, когда метод интерфейса должен возвращать несколько частей информации, так как это действительно часть контракта, а не реализация.Например:
public interface ComplexOperationService {
ComplexOperationResponse doComplexOperation( String param1, Object param2 );
public static class ComplexOperationResponse {
public int completionCode;
public String completionMessage;
public List<Object> data;
// Or use private members & getters if you like...
}
}
Очевидно, что это можно сделать и в отдельном классе, но мне кажется, что я храню весь API, определенный интерфейсом, в одном месте, а не разбросан.