0

虽然这显然是一个RTFM案例,但不知何故,我没能找到一个简明的资料来解释这一切。

public class Outer {

   private class Inner {

   }

}

私有Inner是一个公共inner类的一个类。Outer

我的问题是关于“外部”外部的可见Inner

  1. 我应该能够Inner在另一个类中实例化吗?如果是,是否有任何限制(例如此类在同一个包中等)?

  2. 使用集合时可以Inner用作具体类型吗?例如,我应该能够ArrayList <Inner>在另一个类中声明吗?

  3. 就上述问题而言,是否extends OuterInner 出现另一堂课?

4

2 回答 2

5

Inner 是私有的,因此只有它的父级 Outer 才能对它做任何事情。

于 2013-09-27T22:02:48.403 回答
2

在这种情况下,“FM”是 Java 语言规范。您需要第 6.6.1 节,其中包括:

否则,如果成员或构造函数被声明为私有,则当且仅当它出现在包含成员或构造函数声明的顶级类(第 7.6 节)的主体内时,才允许访问。

所以构造函数可以在声明中的任何地方调用Outer(包括在声明的任何其他嵌套类中Outer),但不能在其他任何地方调用。访问不是继承的——就像尝试调用构造函数的源代码是否在Outer.

于 2013-09-27T22:07:36.770 回答