Комбинация BCEL и отражения / вызова может сделать работу. Используйте BCEL, чтобы получить имена классов и методов (ваш трюк LDC
, invokestatic
или что-то похожее) и сразу же вызвать метод. Вы можете сделать это, если поместите свои «тестовые классы» в путь к классам. Для меня нет необходимости выполнять байт-код.
Если у вас есть класс и имя метода, оно выглядит следующим образом:
Class clazz = Class.forName(yourClassName);
// either (for public methods)
Method method = clazz.getMethod(yourMethodName);
// or for protected / private methods:
Method method = clazz.getDeclaredMethod(yourMethodName, yourArgumentTypes);
method.setAccessible(true);
// assuming the method is static
Object result = method.invoke(null, yourMethodArgs);
// otherwise: pass a object reference instead of null
// to call the method "on" that object