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

时间:2014-04-23 17:21:13

标签: java intellij-idea package keyword

当我尝试使用Intellij(社区版)创建包implements时,我收到了消息Not a valid package name。这是因为使用了关键字吗?

enter image description here

4 个答案:

答案 0 :(得分:21)

  

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

是的,包名称包含following form

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"

因此无法使用keywords

答案 1 :(得分:3)

您不能在包声明中使用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拉丁字母AZ(\ u0041- \ u005a)和az(\ 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 :(得分:2)

您不能将Java关键字用作包名称。请参阅JLS on NamesIdentifiers

答案 3 :(得分:1)

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

package com.implements.thing;