JavaBean属性命名规范定义在哪里?

21

Spring Framework API 文档中提到:

惯例是根据JavaBeans属性命名规则返回类的小写简称:因此,com.myapp.Product变成product;com.myapp.MyProduct变成myProduct;com.myapp.UKProduct变成UKProduct。

我查看了Sun公司的网站以寻找定义,但未找到。我想知道关于名称中有多个大写字符的规则。如果第二个字符也是大写字母,那么第一个字符是否应该是大写字母?

背景是,我想根据对象类型自动生成变量名称,以在HTML模板中使用。例如:类: SomeName --> 对象: someName。

2个回答

32

5
谢谢!正如我所猜测的,第二个字母是否大写与此有关。Sun 公司表示:“然而为了支持偶尔使用全大写名称,我们会检查名称的前两个字符是否都是大写字母,如果是,则保持原样。”有一种方法可以将字符串转换为遵循这种规则的名称:java.beans.Introspector#decapitalize(String name)。 - deamon
哇,这是我以前不知道的很多细节。谢谢! - Carl Smotricz

3

1
是否有一个遵守Java Beans规则的反函数“capitalize”?(仅将第一个字符大写不适用于gURL <-> getgURL,aFoo <-> getaFoo的情况。这就是为什么我正在寻找一种“官方”方法的原因。) - leo
@leo 有 java.beans.NameGenerator.capitalize,但它不是反函数。远非如此。恐怕这个函数根本就不可逆,但你可以通过在Introspector.decapitalize中将 toLowerCase 替换为 toUpperCase 来更接近。实际上,toTitleCase 更正确。 - maaartinus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接