2010-01-02 94 views
16

Spring Framework API醫生說:JavaBean屬性命名約定在哪裏定義?

採用的約定是返回類的小寫形式的短名稱,根據JavaBeans屬性的命名規則:那麼,com.myapp.Product變成產品; com.myapp.MyProduct成爲myProduct; com.myapp.UKProduct成爲UKProduct。

我看着太陽網站找到一個定義,但沒有找到一個。我想知道一開始就有多個大寫字母的規則。如果第二個字符是大寫字母,規則是第一個字符是大寫字母嗎?

背景是,我想根據對象的類型自動生成用於HTML模板的變量名稱。例如:class:SomeName - > object:someName。

回答

26

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

此外,direct link to the (PDF) specification

鏈接文檔中的第8.8節標題爲「推斷名稱的大小寫」,並簡要概述瞭如何派生屬性的名稱。

+4

謝謝!正如我猜測的那樣,第二個字母是大寫還是不是。 Sun:「但是爲了支持所有大寫名稱的偶爾使用,我們檢查名稱的前兩個字符是否都是大寫字母,如果是這樣,請保持獨立。」 有一種方法可以將字符串轉換爲遵循此約定的名稱:java.beans.Introspector#decapitalize(String name) – deamon 2010-01-02 11:40:32

+0

哇,這是我以前不知道的很多細節。謝謝! – 2010-01-02 11:46:22

2
+0

是否有符合Java Beans規則的「大寫」反函數? (只是大寫第一個字符不適用於gURL <-> getgURL,aFoo <-> getaFoo。這就是爲什麼我正在尋找一個「官方」方法。) – leo 2012-08-02 21:40:14

+0

@leo有'java.beans.NameGenerator.capitalize',但它不是反函數。目前爲止沒有。恐怕這個函數根本不可逆,但是你可以通過在[Introspector.decapitalize]中的'toUpperCase'替換'toLowerCase'(http://grepcode.com/file/repository.grepcode.com /java/root/jdk/openjdk/8-b132/java/beans/Introspector.java#Introspector.decapitalize%28java.lang.String%29)。其實,'toTitleCase'更正確。 – maaartinus 2014-08-16 05:24:28