Почему я не могу определить статический метод в интерфейсе Java?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему я не могу определить статический метод в интерфейсе Java?

Сообщение Anonymous »

ПРИМЕЧАНИЕ. Этот вопрос появился раньше Java 8. Начиная с Java 8, в интерфейсах разрешены статические методы.
Почему можно Разве я не определяю статический метод в интерфейсе Java?
Вот пример:

Код: Выделить всё

public interface IXMLizable
{
static T newInstanceFromXML(Element e);
Element toXMLElement();
}
Это не сработает. Но почему бы и нет?
Одной из возможных проблем может быть то, что происходит, когда вы звоните:

Код: Выделить всё

IXMLizable.newInstanceFromXML(e);
В этом случае, я думаю, следует просто вызвать пустой метод (т. е. {}). Все подклассы будут вынуждены реализовать статический метод, поэтому все они будут в порядке при вызове статического метода. Так почему же это невозможно?
Думаю, я ищу более глубокий ответ, чем «потому что так устроена Java».
Есть ли особая технологическая причина, по которой статические методы нельзя перезаписать? То есть, почему разработчики Java решили сделать методы экземпляра переопределяемыми, а не статические?
Проблема моего проекта в том, что я пытаюсь использовать интерфейсы для обеспечения соблюдения соглашений о кодировании.
То есть цель интерфейса двоякая:

[*]Мне нужен IXMLizable интерфейс, позволяющий мне преобразовывать классы, реализующие его, в элементы XML (использование полиморфизма работает нормально).

[*]Если кто-то хочет создать новый экземпляр класса, реализующего интерфейс IXMLizable, они всегда будут знать, что будет статический фабричный метод newInstanceFromXML(Element e).


Есть ли какой-либо другой способ обеспечить это, кроме как просто оставить комментарий в интерфейсе?

Подробнее здесь: https://stackoverflow.com/questions/512 ... -interface
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»