Почему можно Разве я не определяю статический метод в интерфейсе 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
Мобильная версия