【问题标题】:Why cannot name a java package "default"?为什么不能将 java 包命名为“默认”?
【发布时间】:2018-07-31 09:29:31
【问题描述】:

在 IntelliJ 中,我尝试为我的默认服务实现创建一个包,名称为 default

???? src
└─── ???? main
    └─── ???? java
        └─── ???? service
            ├─── ???? default
            │   └─── // here I can't create java classes
            │
            ├─── PostService.java
            ├─── SearchService.java
            └─── UserService.java

IDE提示不能在这个包中创建java类。

为什么我不能在名为 default 的包中创建 java 类?

【问题讨论】:

    标签: java syntax-error naming-conventions packages directory-structure


    【解决方案1】:

    default 是保留字。您不能将包、类、方法、变量等任何关键字作为名称。

    保留字的完整列表是here

    【讨论】:

    • 谢谢。我不知道使用关键字和保留字的限制也适用于包名称。
    【解决方案2】:

    因为 default 是一个保留的 Java 关键字 - 您不能使用保留的关键字(如 publicvoid 等)作为包名称。

    【讨论】:

      【解决方案3】:

      您不能在您的程序中使用以下任何一种标识符。 关键字 const 和 goto 是保留的,即使它们不是 目前使用。 true、false 和 null 可能看起来像关键字,但 它们实际上是文字;您不能将它们用作您的标识符 程序。

      查看保留关键字列表。 documentation

      【讨论】:

        【解决方案4】:

        default 是 Java 中的 reserved word - 当没有匹配 case 时,它用于 switch 语句的分支(并且,正如评论中提到的 @Glains - 从 Java 8 开始,它也用于提供接口的默认实现)。因此,它不能用作标识符,就像您不能将包命名为packageclass public 等一样。

        【讨论】:

        • 不要忘记接口中的默认方法。
        • @Glains 好点,谢谢!为了完整起见,也将其编辑到我的答案中。
        猜你喜欢
        • 2013-12-18
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 2016-11-02
        • 2010-11-28
        • 2013-04-05
        • 1970-01-01
        • 2013-05-31
        相关资源
        最近更新 更多