我的课程结构大致如下:
final public class Util {
private Util() {
throw new AssertionError(); // there is not supposed to exist an instance
}
public static DataElem getData() {
return new Util().new DataElem();
}
public class DataElem {
// class definition
}
}
正确生成内部类实例的代码取自this线程。但是我不喜欢每次创建一个内部类实例时,从外部实例获取一个实例。因为我将AssertionError放入其构造函数中,所以它不起作用。
我是否必须携带一个虚拟实例才能从内部类创建实例?我不能像Util.DataElem一样工作吗?
答案 0 :(得分:3)
你可以使你的内部类静态
final public class Util {
private Util() {
throw new AssertionError(); // there is not supposed to exist an instance
}
public static DataElem getData() {
return new Util.DataElem();
}
private static class DataElem {
private DataElem(){} // keep private if you just want elements to be created via Factory method
// class definition
}
}
然后将其初始化为
new Util.DataElem();