如果你在Java中有一个私有静态嵌套类,是否仍然建议使用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;
}
}
vs封装:
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;
}
}
}
答案 0 :(得分:2)
取决于但一般我认为没关系。 使用getter和setter的主要原因之一是隐藏类的用户的实现细节,这样您就可以轻松地更改实现而不会影响用户。
在私有内部类的情况下,这不是问题,因为你既是类的作者又是用户,并且外面没有人可以使用它。
如果您只是用来保存一些数据,那么没有getter和setter会使代码更短,更易读。
但是,如果内部类更大更复杂(通常不是这种情况),那么你应该考虑使用getter / setter。这样,您就可以在代码中向bar
添加边界检查。
答案 1 :(得分:0)
建议,因为在某些时候重构和移动课程可能是有意义的。而且,可能希望为其创建接口,等等。可能还有更多原因。
答案 2 :(得分:0)
根据Java教程:“静态嵌套类与其外部类(和其他类)的实例成员交互,就像任何其他顶级类一样。实际上,静态嵌套类在行为上是顶级类为了方便包装,它已经嵌套在另一个顶级类中。“
所以我说是的,你通常想要像对待顶级课程一样封装其成员。