¿Por qué no puedo definir un método estático en una interfaz Java?

Aquí está el ejemplo:

public interface IXMLizable<T>
{
  static T newInstanceFromXML(Element e);
  Element toXMLElement();
}

Por supuesto, esto no funcionará. ¿Pero por qué no

Uno de los posibles problemas sería, qué sucede cuando llama:

IXMLizable.newInstanceFromXML(e);

En este caso, creo que debería llamar a un método vacío (es decir, {}). Todas las subclases se verían obligadas a implementar el método estático, por lo que estarían bien al llamar al método estático. Entonces, ¿por qué no es esto posible?

EDITAR Creo que estoy buscando una respuesta más profunda que "porque así es Java".

¿Existe una razón tecnológica particular por la cual los métodos estáticos no se pueden sobrescribir? Es decir, ¿por qué los diseñadores de Java decidieron hacer que los métodos de instancia sean reemplazables pero no métodos estáticos?

EDITAR El problema con mi diseño es que estoy tratando de usar interfaces para aplicar una convención de codificación.

Es decir, el objetivo de la interfaz es doble:

Quiero que la interfaz IXMLizable me permita convertir las clases que lo implementan en elementos XML (usando polimorfismo, funciona bien).

Si alguien quiere crear una nueva instancia de una clase que implemente la interfaz IXMLizable, siempre sabrá que habrá un nuevo constructor estático NewInstanceFromXML (Elemento e).

¿Hay alguna otra forma de garantizar esto, además de poner un comentario en la interfaz?

EDITAR partir de Java 8, los métodos estáticos ahora están permitidos en las interfaces.

Respuestas a la pregunta(24)

Su respuesta a la pregunta