Является ли это приемлемым использованием метода интерфейса 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
методы, которые должны быть реализованы подклассами (в данном случае, интерфейсные методы без реализации по умолчанию), а также предоставление конкретных методов, которые могут быть переопределены подклассами (метод интерфейса по умолчанию).