javassist
javassist copied to clipboard
Needed Support of TypeArguments for a Collection variable (List<Object>)
When I tried to insert the following code in a method body by CtMethod.insertAt(int,String), exception occured. It would be helpful, if some one helps me to get over this.
code :
List<String> list = new ArrayList<String>();
exception trace :
Caused by: compile error: syntax error near "rrayList<String>();"
at javassist.compiler.Parser.parseNew(Parser.java:1293)
at javassist.compiler.Parser.parsePrimaryExpr(Parser.java:1244)
at javassist.compiler.Parser.parsePostfix(Parser.java:1031)
at javassist.compiler.Parser.parseUnaryExpr(Parser.java:888)
at javassist.compiler.Parser.parseBinaryExpr(Parser.java:775)
at javassist.compiler.Parser.parseConditionalExpr(Parser.java:719)
at javassist.compiler.Parser.parseExpression(Parser.java:699)
at javassist.compiler.Parser.parseExpression(Parser.java:704)
at javassist.compiler.Parser.parseDeclarationOrExpression(Parser.java:591)
at javassist.compiler.Parser.parseStatement(Parser.java:277)
at javassist.compiler.Javac.compileStmnt(Javac.java:565)
at javassist.CtBehavior.insertAt(CtBehavior.java:1192)
... 4 more
Use raw type and explicit type casts. At bytecode level, type arguments are taken off.
I just insert List processArg = new ArrayList(); BUT still got the "syntax error near rrayList();" Would you like to show me a good example to insert collection? Thank you very much! :)
Since Javassist does not know which packages you import, you have to use FQNs. So, java.util.List p = new java.util.ArrayList().
But the error message seems weird. The string literal might be broken.
public void test(Object src, Object value) { java.util.List<java.lang.String> valueNew = (java.util.List<java.lang.String>) value; }
i want to cast value(Object type) to List<String>,but print error:
Caused by: compile error: syntax error near "g.String>) value; }" at javassist.compiler.Parser.parsePrimaryExpr(Parser.java:1256) at javassist.compiler.Parser.parsePostfix(Parser.java:1030) at javassist.compiler.Parser.parseUnaryExpr(Parser.java:888) at javassist.compiler.Parser.binaryExpr2(Parser.java:809) at javassist.compiler.Parser.parseBinaryExpr(Parser.java:782) at javassist.compiler.Parser.parseConditionalExpr(Parser.java:719) at javassist.compiler.Parser.parseExpression(Parser.java:699) at javassist.compiler.Parser.parsePrimaryExpr(Parser.java:1244) at javassist.compiler.Parser.parsePostfix(Parser.java:1030) at javassist.compiler.Parser.parseCast(Parser.java:921) at javassist.compiler.Parser.parseUnaryExpr(Parser.java:886) at javassist.compiler.Parser.parseBinaryExpr(Parser.java:775) at javassist.compiler.Parser.parseConditionalExpr(Parser.java:719) at javassist.compiler.Parser.parseExpression(Parser.java:699) at javassist.compiler.Parser.parseExpression(Parser.java:704) at javassist.compiler.Parser.parseDeclarationOrExpression(Parser.java:591)
It would be helpful,thank you very much. @chibash