【发布时间】:2022-01-25 11:21:14
【问题描述】:
这可能是一个愚蠢的问题,但我很惊讶地看到不允许在外部类中使用私有内部类作为泛型类型。
如果我使内部类受到保护,它编译得很好。
另外,我必须精确到Outer.Inner 而不仅仅是Inner,否则找不到内部类。这看起来也有点奇怪。
为什么 Inner 不能是私有的?为什么允许它被保护?
public class Outer extends AbstractSet<Outer.Inner> {
private static class Inner {
// ...
}
// ...
}
错误是:
Outer.java:3: error: Inner has private access in Outer
public class Outer extends AbstractSet<Outer.Inner> {
^
1 error
我正在使用 Java SE 17,但我认为这并不重要。
【问题讨论】:
-
我认为这是因为当我们创建一个外部类的对象时,它是内部类型的。由于内部是私有的,其他类不能访问。我们不能使泛型类型 Inner 的 Outer...
-
允许包私有,访问级别更严格。
标签: java