Моя цель — создать во время выполнения дополнительный метод внутри определенного файла .class.
Метод, возвращающий Object[][].
Для этого я нашел замечательный фреймворк под названием Javassist, фреймворк модификатора байт-кода, который помогает вам модифицировать скомпилированный класс во время выполнения, чтобы добавить больше байт-кода, представляющего новый метод.
Удалось создать метод void и метод, возвращающий строку, но по какой-то причине я не могу создать метод, возвращающий массив или матрицу.
До сих пор я изо всех сил пытался найти правильный способ создания такого метода и получил непрерывное исключение CannotCompileException.
Код:
private static CtMethod generateMethod1(CtClass declaringClass)
throws CannotCompileException {
StringBuffer sb = new StringBuffer();
sb.append("public ").append(Object[][].class.getName()).append(" ").append("method1").append("(){")
.append("return new").append(Object[][].class.getName()).append("{{ 1,2 }}").append("; }");
System.out.println(sb.toString());
return CtMethod.make(sb.toString(), declaringClass);
}
ToString сгенерированного выше метода:
общедоступный [[Ljava.lang.Object; method1(){return [[Ljava.lang.Object;{{ 1,2 }}; }
Вероятно, сбой из-за ложного синтаксиса jni
Помощь будет оценена, заранее спасибо
~Мон