1

Apache Wicket、Hibernate Criteria API 和其他 java 库使用属性名称作为字符串来访问模型数据。例如:

new PropertyModel(address, "street");

这定义了一个模型,该模型支持通过调用 address.getStreet() 方法从地址对象中读取“街道”属性。

一个问题是这样的字符串文字很不方便,并且在 Java 等静态类型语言中看起来不自然。您可以在属性名称中打错字,例如“stret”,您只会注意到这行代码何时执行。其他不便之处在于,自动重构会破坏您的代码,因为此字符串文字“street”与代码中表示的 Address 类的 street 属性之间没有直接联系。

解决此问题的一种方法是在模型类中使用常量:

class Address {
    public static final String P_STREET = "street";
...

所有属性名称将在一个地方。此外,可以通过检查生成的 .class 文件或在应用程序启动时使用反射 API 在代码运行之前检查它们是否正确。所以我的第一个问题是,如果我使用这种方法,是否有任何工具可用于执行此检查并查找所有错误?最好与 maven 集成,因此此检查将成为构建过程的一部分。

第二个问题是解决这个问题的其他方法是什么?

4

1 回答 1

2

我认为这是自定义注释处理的一个很好的用例(链接到 JDK api)。您可以使用它在编译时检查带注释的类的内容是否正确;或者您可以使用它动态地将所需字段添加到类中。Project Lombok可以让您了解什么是可能的。

于 2012-07-24T07:55:28.797 回答