我继承了包含静态嵌套类的代码,如下所示:
public class Foo {
// Foo fields and functions
// ...
private static class SGroup {
private static Map<Integer, SGroup> idMap = new HashMap<Integer, SGroup>();
public SGroup(int id, String type) {
// ...
}
}
}
通过阅读SO(例如Java inner class and static nested class),我相信这等效于两个单独文件中的两个单独类:
public class Foo {
// Foo fields and functions
// ...
}
和
public class SGroup {
static Map<Integer, SGroup> idMap = new HashMap<Integer, SGroup>();
public SGroup(int id, String type) {
// ...
}
}
如果这是正确的话,那么维护静态嵌套类结构是否有任何优势,还是应该重构?
最佳答案
Jorn陈述是正确的,通常按照以下经验法则来体现:
嵌套类应设为私有,这意味着保留托管类的辅助逻辑,仅此而已。如果您不能将它们设为私有,则可能不应嵌套。
例外是,当您定义嵌套类以允许轻松访问托管类的状态时,在这种情况下,您应该考虑简单地合并两个类以增加内聚力。