从静态外部util函数访问内部类

时间:2014-07-09 18:31:00

标签: java static

我的课程结构大致如下:

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一样工作吗?

1 个答案:

答案 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();