Подтвердить что ты не робот

Java call main() метод класса с использованием отражения

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

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

4b9b3361

Ответ 1

Не должно быть сложнее вызова любой другой функции:

public static void main(String[] args) throws ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
    Class<?> cls = Class.forName("pkg1.pkg2.classname");
    Method meth = cls.getMethod("main", String[].class);
    String[] params = null; // init params accordingly
    meth.invoke(null, (Object) params); // static method doesn't have an instance
}

Но на самом деле я не вижу в этом многих применений, единственное, что вы покупаете, это то, что вы можете скомпилировать программу, не связывая другую, если вы никогда не используете этот конкретный путь кода, но если это вам нужно, здесь мы идем;)

Ответ 2

Если у вас есть два java файла, у которых есть основной метод, вы не можете скомпилировать их как разные проекты и вызвать один из них?