Java包命名合法语法规则

Sco*_*ott 2 java

请注意,我不是在询问Java 包命名约定

例如,Java 在法律上不允许包名以数字开头

但是,官方 Java 文档似乎并未涵盖控制包名称中可以使用或不可以使用的内容的实际规则。

什么是合法的包名称集?

Mic*_*ael 6

它是一个 Java 标识符,后跟 N(句点+标识符)。

PackageDeclaration:
{PackageModifier} package Identifier {. Identifier} ;
Run Code Online (Sandbox Code Playgroud)

https://docs.oracle.com/javase/specs/jls/se16/html/jls-7.html#jls-7.4

标识符是(包括一些嵌套的定义):

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"
Run Code Online (Sandbox Code Playgroud)

“Java 字母”是 Character.isJavaIdentifierStart(int) 方法为其返回 true 的字符。

“Java 字母或数字”是 Character.isJavaIdentifierPart(int) 方法为其返回 true 的字符。

https://docs.oracle.com/javase/specs/jls/se16/html/jls-3.html#jls-Identifier