在java中使用逻辑的setter

考虑使用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;
    }

}

这是一个持久化对象.

我在构造函数中设置数据没有问题,但是可以在创建对象之后设置Message的文本字段,并且在设置文本时,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中使用逻辑,那么你也可以直接访问这些字段!

上一篇:空getter和setter的意义是什么,因此在C#中自动生成getter和setter的意义是什么?


下一篇:java – 当需要在每个setter中使用相同的条件运算符时,如何成为DRY?