1

在我的所有JSF项目中,我使用Pojo
As a的标准定义Plain Old Java Object来定义private字段的修饰符

例如

public class Pojo {

    // My private fields
    private String field1;
    private String field2;

    // setters AND getters
    // ----------------------------
    public String getField1() {
        return field1;
    }
    public void setField1(String field1) {
        this.field1 = field1;
    }
    public String getField2() {
        return field2;
    }
    public void setField2(String field2) {
        this.field2 = field2;
    }
    // ---------------------------- 
}

public使用修饰符而不是private我的Pojo字段是否有任何风险
例如

public class Pojo {

    // My private fields
    public String field1;
    public String field2;

    // setters AND getters
    // ----------------------------
    public String getField1() {
        return field1;
    }
    public void setField1(String field1) {
        this.field1 = field1;
    }
    public String getField2() {
        return field2;
    }
    public void setField2(String field2) {
        this.field2 = field2;
    }
    // ---------------------------- 
}

注意
我真的需要这样做(更改修饰符)不仅仅是为了实验

4

1 回答 1

11

“风险”是您基本上不再可以控制这些值。您永远不能强制执行任何类型的验证,因为任何代码都可以随时更改值。

此外,您永远无法更改数据存储方式的实现细节,因为您将其公开。仅使用 getter 和 setter,您就将 API(类可以做什么)与实现细节分开。

现在您可能会认为这一切都很好(尽管我不会)。如果您确实采用公共字段路线,我建议您删除 getter/setter 方法 - 否则看到这些方法的任何人可能看起来像您有一个“适当的”类,而实际上您只有一个数据桶。

于 2013-04-07T16:25:01.053 回答