¿Por qué una clase interna no estática no puede tener miembros estáticos (campos y métodos)? [duplicar]

Posible duplicado:
¿Por qué no podemos tener método estático en una clase interna?

Sé que la creación de un objeto de clase interna no estática requiere un objeto de clase externa y el objeto de clase interna no estático creado automáticamente tiene una referencia oculta al objeto de la clase externa. Pero, ¿por qué una clase interna no estática no puede tener miembros estáticos? El diseñador de Java solo tiene que prohibir el acceso a campos no estáticos de clase externa dentro de un método estático de la clase interna, tendría más sentido, ¿no?

Si no tiene sentido tener miembros estáticos en una clase interna, ¿por qué la clase interna puede heredar miembros estáticos al heredar una clase que tiene miembros estáticos?

Leo estoenviar también. Como se menciona:

Las clases internas pueden heredar miembros estáticos que no son constantes en tiempo de compilación, aunque no puedan declararlos. Las clases anidadas que no son clases internas pueden declarar miembros estáticos libremente, de acuerdo con las reglas habituales del lenguaje de programación Java.

¿Es una convención?

Aquí está mi código:

public class OuterClass {

    private int outerClassField;

    public void doSomethingOuterClass() {
        outerClassField = 1;
    }

    public static void doSomethingStaticOuterClass() {
        // outerClassField = 2; // Error: Because static method cannot access an specific object's field
    }

    public class InnerClass extends ClassWithStaticField {

        // Error: Why a non-static inner class cannot have static fields ?
        // public static int innerClassStaticField = 1;

        public void doSomethingInnerClass() {
            outerClassField = 3;
            staticField = 1;
        }

        // Error: Why a non-static inner class cannot have static methods ?
        // public static void doSomethingStaticInnerClass() {
        // outerClassField = 4;
        // }
    }

    public static void main(final String[] args) {
        // If it does not make sense to have static members in an inner class, why inner class can inherit statis members by inheriting a class who has static
        // members?
        OuterClass.InnerClass.staticField = 1;
        OuterClass.InnerClass.staticMethod();
    }
}

class ClassWithStaticField {
    public static int staticField;

    public static void staticMethod() {
    };
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta