如果您在Java中有一个私有(private)的静态嵌套类,是否仍建议使用getter和setter而不是直接进行字段访问?

一个例子。直接现场访问:

public class Application {
    private List<MyInnerClass> myInnerClassList;

    // ...

    public void foo() {
        MyInnerClass inner = new MyInnerClass();
        inner.bar = 50;
        myInnerClassList.add(inner);
    }

    private static class MyInnerClass {
        private int bar;
    }
}

与封装:
public class Application {
    private List<MyInnerClass> myInnerClassList;

    // ...

    public void foo() {
        MyInnerClass inner = new MyInnerClass();
        inner.setBar(50);
        myInnerClassList.add(inner);
    }

    private static class MyInnerClass {
        private int bar;

        public int getBar() {
            return bar;
        }

        public void setBar(int bar) {
            this.bar = bar;
        }
    }
}

最佳答案

视情况而定,但总的来说我认为还可以。
使用getter和setter的主要原因之一是向类用户隐藏实现细节,因此您可以轻松更改实现而不会影响用户。

在私有(private)内部类的情况下,这不是问题,因为您既是该类的编写者又是该类的用户,并且外面没有人可以使用它。

如果您只是用来将一些数据保存在一起,则不使用getter和setter会使代码更短,更易读。

但是,如果内部类更大且更复杂(通常不是这种情况),则应考虑使用getters/setter方法。例如,这将使您能够在代码中的bar中添加边界检查。

关于java - 是否建议对私有(private)静态内部类使用封装?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15189065/

10-12 05:54