我有一个大致像这样的类结构:
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一样工作吗?
最佳答案
您可以将内部类设为静态
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();