2010-01-02 7 views
16

Die Spring Framework API doc sagt:Wo ist die JavaBean-Namenskonvention definiert?

Die verwendete Konvention ist der uncapitalized Kurznamen der Klasse zurückzukehren, nach JavaBean Eigenschaft Benennungsregeln: So wird com.myapp.Product Produkt; com.myapp.MyProduct wird myProduct; com.myapp.UKProduct wird UKProduct.

Ich sah auf der Suns-Website nach einer Definition, fand aber keine. Ich wundere mich über eine Regel für Namen mit mehr als einem Großbuchstaben am Anfang. Ist die Regel, dass das erste Zeichen ein Großbuchstabe ist, wenn das zweite Zeichen ebenfalls ein Großbuchstabe ist?

Der Hintergrund ist, dass ich Variablennamen für die Verwendung in HTML-Vorlagen je nach Objekttyp automatisch generieren möchte. Beispiel: Klasse: SomeName -> Objekt: SomeName.

Antwort

26

http://www.oracle.com/technetwork/java/javase/tech/index-jsp-138795.html

Auch ein direct link to the (PDF) specification.

Abschnitt 8.8 im verknüpften Dokument trägt den Titel "Kapitalisierung von abgeleiteten Namen" und beschreibt kurz, wie Namen von Eigenschaften abgeleitet werden.

+4

Dank! Wie ich vermutet habe, ist es relevant, ob der zweite Buchstabe Großbuchstabe ist oder nicht. Sun: "Um jedoch die gelegentliche Verwendung aller Großbuchstaben zu unterstützen, überprüfen wir, ob die ersten beiden Zeichen des Namens beide Großbuchstaben sind und wenn ja, lassen Sie sie in Ruhe." Es gibt eine Methode, um einen String in einen Namen zu konvertieren, der dieser Konvention folgt: java.beans.Introspector # decapitalize (String name) – deamon

+0

Wow, das ist eine Menge Details, die ich vorher nicht kannte. Vielen Dank! –

2

die Umsetzung dieser Funktionalität ist in dieser Klasse: http://java.sun.com/javase/6/docs/api/java/beans/Introspector.html

+0

Gibt es eine umgekehrte Funktion "Großbuchstaben", die den Java Beans Regeln gehorcht? (Nur die Großschreibung der ersten Char funktioniert nicht im Fall von gURL getgURL, aFoo <-> getaFoo. Deshalb bin ich auf der Suche nach einer "offiziellen" Methode.) – leo

+0

@leo Es gibt 'java.beans.NameGenerator.capitalize', aber es ist nicht die Umkehrfunktion. Bei weitem nicht. Ich fürchte, die Funktion ist nicht invertierbar, aber Sie könnten näher kommen, indem Sie 'ToLowerCase' durch' toUpperCase' in [Introspector.decapitalize] (http://grepcode.com/file/repository.grepcode.com) ersetzen /java/root/jdk/openjdk/8-b132/java/beans/Introspector.java#Introspector.decapitalize%28java.lang.String%29). Eigentlich ist 'toTitleCase' richtiger. – maaartinus