一些想法:
受保护的 setter 和工厂方法
您可以使用受保护的 setter 方法定义 bean,并在同一个包中定义一个工厂类,该工厂类接受所有参数并调用这些 setter。bean 在该包之外是不可变的。要强制执行此操作,请务必密封您的 jar,以便最终用户无法在同一个包中创建新类。
注意:您可以使用我的 JavaDude Bean 注释来简化创建:
http ://code.google.com/p/javadude/wiki/Annotations
例如:
@Bean(writer=Access.PROTECTED, // all setXXX methods will be protected
properties={
@Property(name="name"),
@Property(name="age", type=int.class)
})
public class Person extends PersonGen {
}
在eclipse中创建getter和构造函数
Eclipse 有一些很好的工具可以使这个速度更快:
- 创建 bean 类
- 添加你想要的字段
- 在编辑器窗口中单击鼠标右键
- 选择 Source->Generate Getter and Setter
- 按“选择吸气剂”按钮
- 按确定
- 在编辑器窗口中单击鼠标右键
- 选择 Source->Generate Constructors from fields
- 在构造函数中选择并排序您想要的字段
- 按确定
不变性装饰器
另一个想法是用 getter 和 setter 定义你的 bean(你可以使用上述技术,但包括 setter),然后你可以为它创建一个只有 getter 的包装类。