Вызвать статический метод, заданный объектом класса в 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, соответствующих вашим критериям.