我今天早些时候遇到过这样的代码:
public class MyThing {
ArrayList<String> myStrings = new ArrayList<String>();
MyPrivateClass mpc = new MyPrivateClass();
public void DoWork() {
mpc.DoStuff();
}
class MyPrivateClass {
void DoStuff() {
myStrings.add("Test");
}
}
}
这是如何或为何有效? MyPrivateClass
如何在不引用创建它的类的情况下访问myStrings
的实例?
答案 0 :(得分:4)
这被称为“内部类”,因为它是非static
嵌套类。内部类具有(有限的)访问其包含实例see this Oracle example的详细信息。有关嵌套类here的一般类别的更多信息。
答案 1 :(得分:2)
你在谈论nested classes
A nested class is a member of its enclosing class. Non-static nested classes (inner classes)
have access to other members of the enclosing class, even if they are declared private.
答案 2 :(得分:0)
你的主要类是MyThing,然后你指定你可以在整个类MyTHing中使用的变量。由于您在父类中创建了一个类,因此内部类总是可以使用父类的值。