2012-05-11 27 views
2

Javassistを使用してパラメータ付きListフィールドを定義するにはどうすればよいですか?パラメータを指定しなかったListクラスに不平を言っていないが、パラメータが与えられたときにCannotCompileExceptionが発生する以下のコードを試してみました。Javassistを使用してパラメータ付きListでフィールドを定義する方法

ClassPool pool = ClassPool.getDefault(); 
    pool.importPackage("java.util.List"); 
    CtClass cc = pool.makeClass("Test"); 
    CtField f = CtField.make("public List<String> p;", cc); 
    // throws javassist.CannotCompileException: [source error] syntax error near "lic List<String> p;" 

答えて

2

私はそれがジェネリックを理解していない理由(彼らは1.4で導入された)から

+2

を説明するだろう内部のJava 1.4、に設定されている使用しているコンパイラのJavassistの言語準拠レベルを推測すると思いますチュートリアル(http://www.csg.ci.iu-tokyo.ac.jp/~chiba/javassist/tutorial/tutorial3.html#generics)「Javassistの下位レベルのAPIは、Java 5で導入されたジェネリックを完全にサポートしています。 CtClassのような上位レベルのAPIはジェネリックを直接サポートしていません」 –

関連する問題