我想在我的应用程序中动态生成类,并遇到了这个限制/错误?与javassist。javassist:无法用参数化地图/列表解析方法主体
似乎javassist无法解析source-body,如果它具有带参数化类型的Maps/List。
例如:
public static void main(String[] args) throws Exception
{
ClassPool pool = ClassPool.getDefault();
CtClass evalClass = pool.makeClass("Eval");
evalClass.addMethod(
CtNewMethod.make("public void test() { java.util.Map<java.lang.String, java.lang.String> tmp=null; }", evalClass));
Class clazz = evalClass.toClass();
Object obj = clazz.newInstance();
Class[] formalParams = new Class[] { };
Method meth = clazz.getDeclaredMethod("test", formalParams);
Object[] actualParams = new Object[] { };
meth.invoke(obj, actualParams);
}
这将使误差
异常在线程 “主要” javassist.CannotCompileException:源 错误];在 javassist.CtNewMethod.make(CtNewMethod.java:78)丢失在 javassist.CtNewMethod.make(CtNewMethod.java:44)
,但是当我改变身体
public void test() { java.util.Map tmp=null; }
它工作正常。同样适用于“列表”。
任何提示?这是一个限制还是一个错误?
似乎javassist只支持Java 1.4语法。 –