Почему нестатический внутренний класс не может иметь статических членов (полей и методов)? [Дубликат]

Possible Duplicate:
Why cant we have static method in an inner class?

Я знаю, что создание нестатического объекта внутреннего класса требует объекта внешнего класса, а созданный нестатический объект внутреннего класса автоматически имеет скрытую ссылку на объект внешнего класса. Но почему в нестатическом внутреннем классе не может быть статических членов? Разработчику Java просто нужно запретить доступ к нестатическим полям внешнего класса внутри статического метода внутреннего класса, это было бы более логично, не так ли?

Если не имеет смысла иметь статические члены во внутреннем классе, почему внутренний класс может наследовать статические члены, наследуя класс, имеющий статические члены?

Я читаю этосообщение тоже. Как уже упоминалось:

Inner classes may inherit static members that are not compile-time constants even though they may not declare them. Nested classes that are not inner classes may declare static members freely, in accordance with the usual rules of the Java programming language.

Это соглашение?

Вот мой код:

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() {
    };
}

Ответы на вопрос(3)

Ваш ответ на вопрос