2010-01-02 19 views
16

Spring Framework API doc mówi:Gdzie zdefiniowana jest konwencja nazewnictwa właściwości JavaBean?

Konwencja stosuje się do zwrotu uncapitalized krótką nazwę klasy, w zależności od właściwości JavaBeans zasady nazewnictwa: Więc com.myapp.Product staje się produktem; com.myapp.MyProduct staje się myProduct; com.myapp.UKProduct przechodzi na UKProduct.

Spojrzałem na stronę Suns, aby znaleźć definicję, ale jej nie znalazłem. Zastanawiam się nad regułą nazw zawierających więcej niż jedną wielką literę na początku. Czy reguła, że ​​pierwszy znak jest pisany dużymi literami, jest również duża?

Tło polega na tym, że chcę automatycznie generować nazwy zmiennych do użycia w szablonach HTML w zależności od typu obiektu. Przykład: class: SomeName -> object: someName.

Odpowiedz

26

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

Również direct link to the (PDF) specification.

Sekcja 8.8 w dokumencie powiązanym nosi tytuł "Kapitalizacja nazw wywodzących się" i krótko określa, w jaki sposób wyprowadzane są nazwy właściwości.

+4

Dzięki! Jak się domyślałem, jest to istotne, gdy druga litera jest duża lub nie. Niedz: "Jednak w celu obsługi okazjonalnego używania wszystkich nazw wielkich liter sprawdzamy, czy pierwsze dwa znaki nazwy są wielkie i jeśli tak, to zostaw je w spokoju." Istnieje metoda konwertowania ciągu znaków na nazwę zgodną z tą konwencją: java.beans.Introspector # decapitalize (nazwa ciągu) – deamon

+0

Wow, to dużo szczegółów, których wcześniej nie znałem. Dzięki! –

2

realizacja tej funkcji jest w tej klasie: http://java.sun.com/javase/6/docs/api/java/beans/Introspector.html

+0

Czy istnieje funkcja odwrotna "capitalize", która jest zgodna z regułami Java Beans? (Po prostu wielkie litery nie działają w przypadku gURL <-> getgURL, aFoo <-> getaFoo, dlatego szukam "oficjalnej" metody.) – leo

+0

@leo Jest 'java.beans.NameGenerator.capitalize', ale nie jest to funkcja odwrotna. Zdecydowanie nie. Obawiam się, że funkcja nie jest w ogóle odwracalna, ale można się zbliżyć, zastępując 'toLowerCase' przez' toUpperCase' w [Introspector.decapitalize] (http://grepcode.com/file/repository.grepcode.com /java/root/jdk/openjdk/8-b132/java/beans/Introspector.java#Introspector.decapitalize%28java.lang.String%29). Właściwie 'toTitleCase' jest bardziej poprawne. – maaartinus

Powiązane problemy