2016-06-17 3 views
0

Мне нужно добавить класс в мой путь к классам после компиляции моей программы.Reflection и ClassLoader в Java

Затем я использовал ClassLoader с Java Reflection, так как код ниже:

Class NewUnit; 
Constructor constructor; 

ClassLoader myClassLoader = ClassLoader.getSystemClassLoader(); 

// Define a class to be loaded. 
String classNameToBeLoaded = "monarchs_project.Axe"; 

NewUnit = myClassLoader.loadClass(classNameToBeLoaded); 

constructor = NewUnit.getConstructor(int.class, int.class, int.class, int.class); 

NewUnit newUnit = (NewUnit) constructor.newInstance(1, 1, 1, 1); 

Параметры класса Ax являются внутр.

Но это не работает. Метод getConstructor() не работает. Спасибо.

ответ

0

int.class не является допустимым классом. Вам нужно использовать статические переменные типа в классах-оболочках, чтобы получить объект класса для примитивного типа. Ваш вызов getConstructor должен выглядеть следующим образом.

constructor = NewUnit.getConstructor (java.lang.Integer.TYPE, java.lang.Integer.TYPE, java.lang.Integer.TYPE, java.lang.Integer.TYPE);

+0

Спасибо! Теперь это работает! – user3294746

+0

Теперь конструктор работает, но я не могу создать экземпляр класса в объекте newUnit. IDE говорит: «Создайте класс NewUnit в проекте». Я решаю это следующим образом: Объект newUnit = constructor.newInstance (0, 0, 0, 0); – user3294746

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