Является ли это приемлемым использованием метода интерфейса Java по умолчанию?

public interface Example<E>
{
    E get(int index);

    default E get()
    {
        return get(0);
    }
}

Это будет первоначальный дизайн интерфейса. Является ли что-то подобное приемлемым использованием метода по умолчанию (в основном для аргументов по умолчанию), или они должны использоваться в будущем только для дополнительной функциональности?

3 ответа

Решение

Официально заявлено, что целью является обратная совместимость с клиентами, реализующими старый интерфейс (в противном случае им всем придется вернуться и реализовать этот новый метод). Он был добавлен только для этой цели и изначально не был функцией Java. Но, честно говоря, это не имеет большого значения, и дополнительная простота использования, безусловно, делает его приемлемым, на мой взгляд.

Это допустимое использование метода по умолчанию на интерфейсе в Java 8 и новее.

Вот документы: https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html

И учебное руководство: http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/JavaSE8DefaultMethods/JavaSE8DefaultMethods.html

Официальные источники, которые я мог найти от Oracle о предполагаемом использовании default Метод интерфейса ( источник):

Методы по умолчанию позволяют добавлять новые функциональные возможности к интерфейсам ваших библиотек и обеспечивать двоичную совместимость с кодом, написанным для более старых версий этих интерфейсов.

Тем не менее, я отношусь к нему так же, как abstract класс, определяющий abstract методы, которые должны быть реализованы подклассами (в данном случае, интерфейсные методы без реализации по умолчанию), а также предоставление конкретных методов, которые могут быть переопределены подклассами (метод интерфейса по умолчанию).

Другие вопросы по тегам