Ошибка при использовании Reflections в Java - PullRequest
0 голосов
/ 20 сентября 2011

У меня проблема с приведением в этом коде, но я не знаю, как ее исправить.

public void showFrame(String className, Object controller) throws Exception{
    try {
       Class c = Class.forName("com." + className);
       // "(Object.class)" I want this to be of type held in className var
       // this type will be same as one passed into  "controller" at runtime
       Constructor ctr = c.getConstructor(Object.class);  
       ctr.newInstance(controller);
    } catch (ClassNotFoundException ex) {
        JOptionPane.showMessageDialog(null, "Error" );
    }
}

1 Ответ

5 голосов
/ 20 сентября 2011

getConstructor выбирает из возможных существующих конструкторов для рассматриваемого класса.

Если имя вашего класса выглядит следующим образом:

com.mycorp.SomeClass

и у него нет

public SomeClass(Object object) {
  ...
}

конструктор, тогда ctr будет нулевым. Если у него есть такой конструктор, то запрос нового экземпляра без указания значения для параметра Object просто вызовет проблемы.

Кроме того, вы ловите только в том случае, если класс не существует, конструктор не может быть найден, или если менеджер безопасности отрицает создание нового класса, или если конструктор вызывается с неправильным номером параметры и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...