0

我今天早些时候遇到了这样的代码:

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

4

3 回答 3

4

这被称为“内部类”,因为它是一个非static嵌套类。内部类对它们的包含实例具有(有限)访问权限,有关详细信息,请参阅此 Oracle 示例。更多关于嵌套类的一般类别here

于 2013-09-30T08:30:23.267 回答
2

你在谈论嵌套类

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.
于 2013-09-30T08:31:36.713 回答
0

您的主类是 MyThing,然后您指定可以在整个MyTHing 类中使用的变量。由于您在父类中创建类,因此内部类始终可以使用父类的值。

于 2013-09-30T08:31:24.533 回答