Java: использование динамически загружаемых классов - PullRequest
0 голосов
/ 15 мая 2010

Я новичок в Java. Я пытаюсь использовать некоторые динамически загружаемые классы в моем приложении. Приложение не знает классов, просто оно пытается загрузить класс по имени, название которого пришло из ввода. Он не знает класс (поэтому я не могу использовать приведение), но ему просто нужно вызвать некоторые методы этого класса (каждый класс должен иметь эти методы). Я думал об интерфейсах, но я не знаю как. Как я могу вызвать эти методы?

Спасибо

Ответы [ 3 ]

4 голосов
/ 15 мая 2010

С учетом

Class k = loadMyClassDynamically();

Вы можете

Method m = k.getDeclaredMethod("methodName", ArgClass1.class, ArgClass2.class);

Тогда, если вы создадите экземпляр k

Object ki = k.getDeclaredConstructor().newInstance();

Вы можете вызвать метод на ki

m.invoke(ki, ArgClass3.class, ArgClass4.class);

Подробнее см. учебник по отражению .

3 голосов
/ 15 мая 2010

Да, вы можете использовать Class class.

   public InterfaceType getDynamicClass(String className) {
       return (InterfaceType) Class.forName(className).newInstance();
   }

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

0 голосов
/ 15 мая 2010

Хорошо, вы захотите использовать либо интерфейсы, либо базовый класс, от которого вы наследуете. Таким образом, вы можете вызывать предопределенный набор методов объектов, которые вы создаете во время выполнения.

И чтобы продвинуться дальше, вам, вероятно, придется использовать отражение, чтобы создавать экземпляры на основе (текст?) Ввода.

...