【发布时间】:2015-01-15 20:41:39
【问题描述】:
我有一个带有 private 字段的嵌套(静态)类和该字段的 setter 方法。
public class Outer{
private static class Inner{ // List node
private String fieldA;
// ...other members...
public void setA(String fieldA)
{
//.. do importent stuff before setting fieldA
this.fieldA = fieldA;
}
}
}
现在我们遇到了一个错误,因为尽管字段 fieldA 是 private,但 Outer 类直接(而不是通过 setter 方法 setA)访问了 fieldA。如何强制开发人员使用 setter 方法而不是直接访问该字段?
我已阅读相关主题Access modifiers inside a private static nested class in Java,该主题声明它是设计使然。但是是否有解决方法来确保外部类使用 setter 方法?
【问题讨论】:
-
它必须嵌套吗?我认为这可能是问题所在 - 因为它是嵌套的,外部代码可以访问该变量。如果你把那个嵌套类去掉,它会按照你想要的方式运行。
-
我可以把它搬出去。但是这个包中的所有其他类都会看到这个(以前的嵌套)类。但是嵌套类只被外部类使用。
标签: java nested-class java-6