【问题标题】:declare java class as private trigger compilation error将java类声明为私有触发器编译错误
【发布时间】:2018-02-18 12:56:53
【问题描述】:

根据java教程https://docs.oracle.com/javase/tutorial/java/javaOO/classdecl.html

您还可以在非常 开始——所以你可以看到类声明的开始行 可以变得相当复杂。修饰符 public 和 private,其中 确定其他哪些类可以访问MyClass,稍后讨论 在本课中。关于接口和继承的课程将解释 如何以及为什么要在 类声明。暂时不用担心这些 额外的并发症。

一般来说,类声明可以按顺序包含这些组件:

  1. 修饰符,例如 public、private 以及您稍后会遇到的许多其他修饰符。
  2. 类名,首字母大写。
  3. 类的父类(超类)的名称(如果有),前面带有关键字extends。一个类只能扩展(子类)一个父类。
  4. 由类实现的接口的逗号分隔列表(如果有),前面带有关键字 implements。一个类可以实现更多 不止一个界面。
  5. 类主体,用大括号括起来,{}。

但是当使用 private 修饰符声明一个类(顶级类)时,编译器会报错 Modifier 'private' not allowed here。

这是我的代码

private class MyPrivateClass {

}

以及编译中的错误信息

1: error: modifier private not allowed here

【问题讨论】:

  • 这是顶级类还是内部类?
  • 按照教程链接的顶级课程

标签: java


【解决方案1】:

来自section 8.1.1 of the Java Language Specification (JLS)

访问修饰符protectedprivate 仅适用于直接封闭类或枚举声明中的成员类。

换句话说,私有类只有在包含在另一个类中时才允许使用。

【讨论】:

  • 感谢您的澄清,java教程没有提到private只允许在类中使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-04
相关资源
最近更新 更多