在Java中运行静态初始化程序的最佳方法

时间:2019-06-15 17:13:42

标签: java

我有一个带有内部初始化代码的静态初始化程序的类A,它将把私有的静态工厂方法引用发送给工厂选择器。如何既不在A的其他位置运行静态初始化程序呢?没有try-catch块,还有更优雅的解决方法吗?

我试图创建并运行空的静态方法,它可以工作,但是那样做会不正确。

public class A implements Factoriable
{
    private A(/*...*/) {/*...*/}
    /*...*/
    static
    {
        Factories.registerFactory(A.class, A::create);
    }
    private static A create(Q source)
    {   /*...*/ }
}

现在我像这样运行初始化程序:

final Class[] classes = new Class[]{A.class};
final ClassLoader loader = this.getClassLoader();
for(Class cl: classes)
{
    try
    {
        Class.forName(cl.getName(), true, loader);
    } catch (ClassNotFoundException ex)
    {
        Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
    }
}

0 个答案:

没有答案