java限制访问类上的setter

时间:2015-11-15 02:46:13

标签: java

我该怎么做?在我的Java应用程序中,我试图定义以下2个“类型” -

  1. 一种 DataSet 类型,可让您定义数据集并执行操作 它
  2. DataElement 类型,可让您定义数据元素并使用它执行操作
  3. DataElement 上有getter和setter,但我希望 ONLY DataSet 能够改变 DataElement

    我不想让DataElement setter包私有,因为我想允许扩展/覆盖我的DataElement实现。

    我还希望DataElement类型成为Hibernate持久化的类(除非这不是必需的)。

2 个答案:

答案 0 :(得分:3)

您可以使用Facade模式生成DataSet返回不可变的DataElement实例。

答案 1 :(得分:1)

ControlAltDel打败了我;我觉得Facade模式在这里很有意义。这就是我提出的方法。通过使用仅允许读取访问的公共接口,您可以在包/ DataSet类中嵌套所需的任何内容。

public interface DataElementReadable {
    public int getElementInt();
    public String getElementString();
    // etc.
}

protected class DataSet {
    private class DataElementReadableWritable implements DataElementReadable {
        int getElementInt() { return ... }
        void setElementInt(int elementInt) { ... }

        // etc.
    }

    ...
}