我很欣赏这个问题的答案可能是“只是保持一致”,但我想了解在字段或方法中添加适用于字段/方法的注释是否有好处。例如,有什么好处:
@XmlElement
private String str;
public String getString() {
return str;
}
在:
private String str;
@XmlElement
public String getString() {
return str;
}
感谢。
答案 0 :(得分:3)
这取决于你是否希望在编组或解组操作期间执行get / set方法中的逻辑。
示例#1 - JPA实体
一些JPA实现使用字节代码操作在getter上的代码中“编织”以执行延迟加载。如果要将此类型的模型映射到XML,则需要注释getter以确保调用get方法的逻辑。
示例#2 - 获取/设置方法不匹配
在下面的答案中,用户具有不兼容的bean访问方法。对于该用例,我建议使用字段访问。
示例#3 - 只读属性
如果您的对象模型具有带有getter但没有setter的属性,则字段访问很有用。
了解更多信息
答案 1 :(得分:0)
这取决于你在做什么。例如:你的xml序列化器/转换器使用getter或直接读取字段?
答案 2 :(得分:0)
在第一种情况下,由于字段是私有的,因此将使用反射来执行对带注释的元素的访问。这可能会导致性能不佳(需要在真实案例中进行检查)。
在第二种情况下,将使用getter / setter执行访问。
例如,在Hibernate中,注释私有属性可以创建 true 只读属性:
@Id
private int id;
// No setter so it cannot be changed without reflexion
public int getId() {
return id;
}
另一方面,注释访问者将使您有机会做更多的事情,而不仅仅是设置/获取属性。
答案 3 :(得分:0)
利益取决于注释所代表的内容。
许多框架允许字段/方法注释相互补充,例如Spring框架中的setter注入。使用字段注释可以决定是否应该存在setter。
其他注释处理器可能会触发不同的行为,具体取决于它是注释的方法或字段。例如,安全注释可以放在该方法的方法控制授权上,而字段注释可以控制对引用该变量的所有例程的授权。
但一般来说,我认为选项很可能是偏好或风格,如果你愿意的话。