Интерфейс Java запрашивает тело метода - PullRequest
0 голосов
/ 24 мая 2018

Я написал этот код Java

public interface Sorter {

  public static <T extends Comparable<T>> void sort(T[] array);

}

, и компилятор выдает мне эту ошибку:

Sorter.java:7: error: missing method body, or declare abstract
  public static <T extends Comparable<T>> void sort(T[] array);
                                               ^
1 error

Изменив точку с запятой на '{}' в концеОбъявление метода, все вроде бы нормально.Но разве это не способ определения интерфейсов?Какой смысл тела в конце концов.

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

у вас не может быть статического метода в интерфейсе.Статические методы не зависят от экземпляра и, следовательно, могут выполняться прямо из файла класса.

Более подробную информацию можно найти в

Почему я не могу объявить статические методы в интерфейсе?

Хотя вы можете определить метод по умолчанию истатический метод с использованием Java 8

0 голосов
/ 24 мая 2018

Метод static не может быть переопределен / реализован подклассами.Он статичен, так как имя передает это.
Так что не имеет смысла (и это так незаконно во время компиляции) определять в интерфейсе абстрактный метод static, поскольку никакой подкласс не может его реализовать / переопределить.
Либо определите реализацию метода static в вашем интерфейсе (возможно, начиная с Java 8), либо сделайте его методом экземпляра, который могут реализовать подклассы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...