我想使用javassist创建这样的方法:
public List<String> queryList(Long id) { return new ArrayList<String>();}
但是,如何将通用类类型“ String”分配给List?
答案 0 :(得分:0)
不可能。参见javassist documentation:
Java的泛型通过擦除技术实现。后 编译后,所有类型参数都将删除。例如,假设 您的源代码声明了参数化类型Vector:
Vector<String> v = new Vector<String>();
:
String s = v.get(0);
已编译的字节码等效于以下代码:
Vector v = new Vector();
:
String s = (String)v.get(0);
因此,编译后的方法如下所示:
public List queryList(Long id) { return new ArrayList();}
如果需要,在场景后面有一个强制类型的强制类型转换。另请参阅:Type Erasure in Java Explained