2012-06-23 66 views
1

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

public class NumberExpression { 
    private static Class numberClass = Class.forName("java.lang.Number"); 
}; 

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

我想我可以将Class.forName围绕一个静态方法来处理ClassNotFoundException,但是有没有更优雅/标准的方式来获得我想要的?

编辑:

(类 “数字” 改为 “java.lang.Number中”)

回答

4

你为什么不这样做:

private Class numberClass = Number.class; 
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(); 
     } 
    } 
}; 

但是,这是很有道理的时候,你要加载的类是动态的,否则,你可以使用类它自己(即Number.class

+0

是的,你是对的。但即使在我改变它之后,编译器仍然抱怨这个异常需要被捕获。 – math4tots

+0

@ math4tots:然后捕捉异常! –

+0

@OliCharlesworth如何?这是一个静态变量,所以我不知道应该在哪里设置它。从我的理解,我不认为我可以在课堂上捕捉异常... – math4tots