2012-06-23 3 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, но есть ли более элегантный/стандартный способ получить то, что я хочу?

Edit:

(класс "Число" изменено на "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

Смежные вопросы