erlaubte Zeichen für Methoden und Klassennamen



  • Hi,

    kann mir jemand verlässlich (am besten mit Quelle) sagen welche Zeichen in Java für Methoden und Klassen erlaubt sind.
    Selbst in der Spezifikation der JVM hab ich nichts gefunden. Einige Grammatiken im Netz die ich gesehen habe, definieren nur ein Subset von dem was eigentlich erlaubt ist (bzw geht).



  • Grundsätzlich alles was unter "Buchstabe" oder "Ziffer" fällt.

    Aber wenn ein OS Java-Quellcode mit é,è und ç darstellen kann, muss das nicht bedeuten, dass ein anderer PC (mit anderem Schriftsatz) dies auch kann... also wenn du das fragst um rauszufinden welche Zeichen du verwenden solltest, dann wäre die Antwort A-Z, a-z und 0-9.



  • JBeni schrieb:

    Grundsätzlich alles was unter "Buchstabe" oder "Ziffer" fällt.

    Aber wenn ein OS Java-Quellcode mit é,è und ç darstellen kann, muss das nicht bedeuten, dass ein anderer PC (mit anderem Schriftsatz) dies auch kann... also wenn du das fragst um rauszufinden welche Zeichen du verwenden solltest, dann wäre die Antwort A-Z, a-z und 0-9.

    Ich frage aber gezielt nach dem was möglich ist. Ob eine Maschine das aufgrund eines fehlenden Schriftsatzes nicht darstellen kann ist ja ein anderes Problem. Auf der Ebene von class-Dateien wird ja beispielsweise für innere Klassen auch ein "$" eingeführt. Andererseits ist "{" oder "[" ja sicher nicht möglich. Das müsste doch eigentlich standardisiert (jedenfalls für eine Implementierung eines Javacompilers oder einer JVM) sein.



  • So, ich hab ein ganzes Buch gefunden, das sich mit diesen Dingen beschäftigt. Nunja, viel Spass mit 500 Seiten...

    Aus der The Java Language-Specification

    Das wichtigste dürfte aber das hier sein:

    3.8 Identifiers
    An identifier is an unlimited-length sequence of Java letters and Java digits, the
    first of which must be a Java letter. An identifier cannot have the same spelling
    (Unicode character sequence) as a keyword (§3.9), boolean literal (§3.10.3), or
    the null literal (§3.10.7).
    Identifier:
    IdentifierChars but not a Keyword or BooleanLiteral or NullLiteral
    IdentifierChars:
    JavaLetter
    IdentifierChars JavaLetterOrDigit
    JavaLetter:
    any Unicode character that is a Java letter (see below)
    JavaLetterOrDigit:
    any Unicode character that is a Java letter-or-digit (see below)
    Letters and digits may be drawn from the entire Unicode character set, which
    supports most writing scripts in use in the world today, including the large sets for
    Chinese, Japanese, and Korean. This allows programmers to use identifiers in
    their programs that are written in their native languages.
    A “Java letter” is a character for which the method Character.isJavaIdentifierStart
    returns true. A “Java letter-or-digit” is a character for which the
    method Character.isJavaIdentifierPart returns true.
    The Java letters include uppercase and lowercase ASCII Latin letters A–Z
    (\u0041–\u005a), and a–z (\u0061–\u007a), and, for historical reasons, the
    ASCII underscore (_, or \u005f) and dollar sign ($, or \u0024). The $ character
    should be used only in mechanically generated source code or, rarely, to access
    preexisting names on legacy systems.
    3.9 Keywords LEXICAL STRUCTURE
    20
    DRAFT
    The “Java digits” include the ASCII digits 0-9 (\u0030–\u0039).
    Two identifiers are the same only if they are identical, that is, have the same
    Unicode character for each letter or digit.
    Identifiers that have the same external appearance may yet be different. For
    example, the identifiers consisting of the single letters LATIN CAPITAL LETTER A
    (A, \u0041), LATIN SMALL LETTER A (a, \u0061), GREEK CAPITAL LETTER ALPHA
    (A, \u0391), and CYRILLIC SMALL LETTER A (a, \u0430) are all different.
    Unicode composite characters are different from the decomposed characters.
    For example, a LATIN CAPITAL LETTER A ACUTE (Á, \u00c1) could be considered
    to be the same as a LATIN CAPITAL LETTER A (A, \u0041) immediately followed
    by a NON-SPACING ACUTE (´, \u0301) when sorting, but these are different in
    identifiers. See The Unicode Standard, Volume 1, pages 412ff for details about
    decomposition, and see pages 626–627 of that work for details about sorting.
    Examples of identifiers are:
    String i3 areth MAX_VALUE isLetterOrDigit



  • Dankeschön, sowas habe ich gesucht.


Anmelden zum Antworten