考虑 Java 中存储一些文本的 Message 对象。
public class Message {
private String text;
private boolean containsDigit;
public Message() {
//constructor
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public boolean isContainsDigit() {
return containsDigit;
}
}
这是一个持久对象。
我对在构造函数中设置数据没问题,但是消息的文本字段可以在创建对象后设置,并且当设置文本时,containsDigit 字段也应该是可查询的。 执行此操作的明显方法是在 setter 中:
public void setText(String text) {
// presume existence of method to check for digit
if(text.containsDigit())
this.containsDigit = true;
this.text = text;
}
但这是否会因为 setter 方法中的逻辑而导致任何“最佳实践”警报响起?
有人会建议替代实现方案吗?
编辑
我应该补充一点,containsDigit
字段是必需的,因为该对象是持久化的,因此随后可以查询 containsDigit
字段。
此外,在使用 Spring/Hibernate 引擎的应用程序中,在重新读取/写入对象时会不断调用此 setter ,因此也想知道这是否实用/高效。
最佳答案
您的情况正是使用 setter 和 getter 的原因。如果您不允许在 setter 中包含逻辑,那么您还不如直接访问这些字段!
关于java - java中具有逻辑的setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22636153/