Я инструктировал свой класс, используя ASM, и обработал его следующим образом
public class MyClassLoader extends ClassLoader {
...
byte[] classBytes = ... //the class is of type com.mypackage.Test
Class clazz = defineClass("com.mypackage.Test", classBytes, 0, classBytes.length);
resolveClass(clazz);
com.mypackage.Test test =(com.mypackage.Test) clazz.newInstance();
Однако я получаю ClassCastException в последней строке:
java.lang.ClassCastException: com.mypackage.Test cannot be cast to com.mypackage.Test
Обходной путь должен использовать отражение:
Object test = clazz.newInstance();
test.getClass().getMethods()[0].invoke(test, null); //invoke some method - successfully
Я использую неправильный загрузчик классов или что-то в этом роде?