2010-01-02 104 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