在我的pojo字段中使用"public"修饰符而不是"private"是否有任何风险?

ahm*_*l88 1 java coding-style pojo

在我的所有JSF项目中,我使用Pojo
As 的标准定义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;
    }
    // ---------------------------- 
}
Run Code Online (Sandbox Code Playgroud)

是否有任何冒险去使用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;
    }
    // ---------------------------- 
}
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*eet 10

"风险"是你基本上不再控制价值.您永远不能执行任何类型的验证,因为任何代码都可以随时更改值.

此外,您永远不能更改数据存储方式的实现细节,因为您正在公开这些数据.只需使用getter和setter,就可以将API(类可以执行的操作)与实现细节分开.

现在你可以决定这一切都很好(虽然我不会).如果你确实沿着公共现场路线走下去,我会建议你删除getter/setter方法 - 否则任何人看到这些方法可能看起来像你有一个"正确"的类,当你真的有一个数据桶.