2012-06-23 65 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