嵌套 类 和成员 类 是一回事吗?

Are nested classes and member classes the same thing?

Java 术语 嵌套 class 成员 class 可以互换使用或不是吗?

来自 JLS:

A nested class is any class whose declaration occurs within the body of another class or interface.

[…]

A member class is a class whose declaration is directly enclosed in the body of another class or interface declaration

我认为 classes 成员一词可能不包括 anonymous classeslocal class es,但这只是我的猜测。

嵌套 类 可以包括静态或非静态 类,其中成员 类 是后者。所以成员 类 是嵌套 类.

的子集

这是来自 Chapter 8. Classes 的一段好话:

Member class declarations describe nested classes that are members of the surrounding class. Member classes may be static, in which case they have no access to the instance variables of the surrounding class; or they may be inner classes.

作为奖励,local classes 绝对不是会员 类:

A local class is a nested class that is not a member of any class [...].


class Foo {
    // a member class
    class InstanceMember {}
    // a member class
    static class StaticMember {}

    Foo() {
        // not a member class
        class LocalAndNotMember {}
        // not a member class
        Object anonymousAndNotMember = new Object() {};
    }
}