Java包名可以是关键字吗?

问题描述 投票:0回答:4

当我尝试使用 IntelliJ(社区版)创建名为

implements
的包时,我收到一条消息“不是有效的包名称”。这是因为使用了关键字吗?

enter image description here

java intellij-idea package keyword
4个回答
26
投票

这是因为使用了关键字吗?

是的,包名称具有以下形式

PackageDeclaration:
    {PackageModifier} package Identifier {. Identifier} ;

哪里

Identifier

Identifier:
    IdentifierChars but not a Keyword or BooleanLiteral or NullLiteral
IdentifierChars:
    JavaLetter {JavaLetterOrDigit}
JavaLetter:
    any Unicode character that is a "Java letter"
JavaLetterOrDigit:
    any Unicode character that is a "Java letter-or-digit"

所以关键字不能使用。


4
投票

您不能在包声明中使用 java 关键字。

abstract   continue   for          new         switch
assert     default    if           package     synchronized
boolean    do         goto         private     this
break      double     implements   protected   throw
byte       else       import       public      throws
case       enum       instanceof   return      transient
catch      extends    int          short       try
char       final      interface    static      void
class      finally    long         strictfp    volatile
const      float      native       super       while

这些按键不能使用。

包声明的语法是

PackageDeclaration:
{PackageModifier} package Identifier {. Identifier} ;

此处标识符是任何“Java 字母”的 Unicode 字符或任何“Java 字母或数字”的 Unicode 字符。
“Java 字母”包括大写和小写 ASCII 拉丁字母 A-Z (\u0041-\u005a) 和 a-z (\u0061-\u007a),并且由于历史原因,还包括 ASCII 下划线(_ 或 \u005f)和美元符号($ 或 \u0024)。 $ 符号应该仅在机械生成的源代码中使用,或者很少用于访问遗留系统上预先存在的名称。

参考

  1. http://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html
  2. http://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-IdentifierChars

2
投票

不能使用 Java 关键字作为包名称。请参阅JLS 关于名称标识符


-1
投票

这对我来说效果很好,在 Intellij 13.1.2 中,但是,即使您创建了一个包,也不能使用具有此名称的包,因为 java

package
语句不会接受包名称中任何位置的关键字。所以,我可以创建,但不能使用:

package com.implements.thing;
© www.soinside.com 2019 - 2024. All rights reserved.