Java包名称可以是关键字吗?

Java包名称可以是关键字吗?,java,intellij-idea,package,keyword,Java,Intellij Idea,Package,Keyword,当我尝试使用Intellij(community edition)创建一个包implements时,我收到消息不是一个有效的包名。这是因为使用了关键字吗 您不能在包声明中使用java关键字。 abstract continue for new switch assert default if package synchronized boolean do goto priva

当我尝试使用Intellij(community edition)创建一个包
implements
时,我收到消息
不是一个有效的包名
。这是因为使用了关键字吗


您不能在包声明中使用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} ;
这里的标识符是任何Unicode字符,它是“Java字母”或任何Unicode字符,它是“Java字母或数字”。
“Java字母”包括大写和小写ASCII拉丁字母A-Z(\u0041-\u005a)和A-Z(\u0061-\u007a),出于历史原因,还包括ASCII下划线(\u005f)和美元符号($,或\u0024)。$sign应该只在机械生成的源代码中使用,或者很少用于访问遗留系统上预先存在的名称

提及

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

    是的,包名具有

    在哪里


    因此不能使用。

    不能使用Java关键字作为包名。请参见和

    在Intellij 13.1.2中,这对我来说很好,但是,即使创建了一个具有此名称的包,也不能使用它,因为java
    package
    语句在包名称中的任何位置都不接受关键字。因此,我可以创建,但不能使用:

    package com.implements.thing;
    

    . 这可能会提供一些见解。不,它不能是包名..包名不能是任何java关键字,如int、class、implements Too出于好奇,您知道“PackageModifier”的任何示例吗?JLS说它必须是一个注释,但我以前从未见过这样的用法。@JeffGohlke它不是很常见,但您可以对包进行注释。想想
    package info.java
    文件。有关JAXB示例,请参阅。@JeffGohlke很有趣。谢谢你的例子!
    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"
    
    package com.implements.thing;