Вызвать статический метод, заданный объектом класса в java
Если
class MyClass {
public static void main(String[] str) {
System.out.println("hello world");
}
}
// in some other file and method
Class klass = Class.forName("MyClass");
Как я могу позвонить MyClass.main
? У меня нет строки "MyClass" во время компиляции, поэтому я не могу просто вызвать MyClass.main(String[]{})
.
Ответы
Ответ 1
Вы используете reflection для вызова методов (или создания объектов и т.д.). Ниже приведен пример для вызова метода main()
в MyClass
. Все, что вам нужно, это убедиться, что MyClass
находится в пути к классам.
Class<?> cls = Class.forName("MyClass");
Method m = cls.getMethod("main", String[].class);
String[] params = null;
m.invoke(null, (Object) params);
Ответ 2
Если во время компиляции у вас нет строки "MyClass", вам нужно как-то ее найти, общие способы использования этого фреймворка:
- настройте файл .properties или xml, в котором вы найдете нужное имя класса.
- сканировать текущий каталог для файлов .class, соответствующих вашим критериям.
- сканировать файлы .jar для файлов .class, соответствующих вашим критериям.