Wenn ich versuche, ein Paket implements
mit Intellij (Community Edition) zu erstellen, bekam ich die Nachricht Not a valid package name
. Liegt das daran, dass das Keyword verwendet wird?Kann der Name des Java-Pakets ein Schlüsselwort sein?
Antwort
dies ist wegen der Keyword verwendet?
Ja, ein Paketname hat den following form
PackageDeclaration:
{PackageModifier} package Identifier {. Identifier} ;
wo 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"
So keywords kann nicht verwendet werden.
Aus Neugier, kennen Sie irgendwelche Beispiele für einen "PackageModifier"? Die JLS sagt, dass es eine Anmerkung sein muss, aber ich habe noch nie eine solche Verwendung gesehen. – asteri
@JeffGohlke Es ist nicht sehr verbreitet, aber Sie können Pakete mit Anmerkungen versehen. Denken Sie an die Datei 'package-info.java'. Für ein JAXB-Beispiel siehe [hier] (http://stackoverflow.com/questions/7501494/what-is-jaxb-generated-package-info-java). –
@JeffGohlke http://stackoverflow.com/questions/2099431/whats-the-point-of-package-annotations – yshavit
Sie können ein Java-Schlüsselwort in Ihrem Paket Erklärung verwenden.
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
Diese keyworkds nicht verwendet werden können.
die Syntax der Paketdeklaration ist
PackageDeclaration:
{PackageModifier} package Identifier {. Identifier} ;
Hier Identifiers sind jedes Unicode-Zeichen, die eine "Java Buchstaben" oder jedes Unicode-Zeichen ist, dass ein "Java Brief-oder-Zahl" ist.
Die "Java-Buchstaben" enthalten Groß- und Kleinbuchstaben ASCII-lateinische Buchstaben AZ (\ u0041- \ u005a) und az (\ u0061- \ u007a) und aus historischen Gründen den ASCII-Unterstrich (_, oder \ u005f) und Dollarzeichen ($ oder \ u0024). Das $ -Zeichen sollte nur in mechanisch erzeugtem Quellcode verwendet werden oder selten für den Zugriff auf bereits vorhandene Namen auf Legacy-Systemen.
Siehe
Sie können kein Java-Schlüsselwort als Paketnamen verwenden. Siehe JLS on Names und Identifiers
Dies funktioniert gut für mich, in IntelliJ 13.1.2 jedoch nicht ein Paket mit diesem Namen verwenden können, selbst wenn Sie eine erstellen, weil die Java package
Anweisung wird kein Schlüsselwort akzeptieren überall in den Paketnamen. So kann ich schaffen, kann aber nicht verwendet werden:
package com.implements.thing;
[Java Package Naming Conventions] (http://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html). Dies kann einige Einblicke liefern. – csmckelvey
Nein, es kann nicht Paketname sein .. Paketname darf kein Java-Schlüsselwort wie int, Klasse sein, implementiert auch –