在Java中初始化编译时已知的静态类变量

mat*_*ots 1 java reflection class

我想在Java中初始化一个静态的Class变量:

public class NumberExpression {
    private static Class numberClass = Class.forName("java.lang.Number");
};
Run Code Online (Sandbox Code Playgroud)

上面的代码段不起作用,因为Class.forName抛出一个ClassNotFoundException.类似的东西new Integer().getClass()不起作用,因为它Number是一个抽象类.

我想我可以用Class.forName一个处理它的静态方法ClassNotFoundException,但是有更优雅/标准的方法来获得我想要的东西吗?

编辑:

(类"Number"更改为"java.lang.Number")

Fra*_*eth 5

它不起作用,因为该类Number不存在.你的意思是java.lang.Number.

你可以尝试类似的东西:

public class NumberExpression {
    private static Class numberClass;
    static {
        try {
            numberClass = Class.forName("java.lang.Number");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

但是,当您尝试加载的类是动态的时,这才有意义,否则您可以使用它自己的类(即Number.class)