我想用javassist来创建一个类似这样的方法:
public List<String> queryList(Long id) { return new ArrayList<String>();}
但是,如何将泛型类类型"String“赋值给List?
发布于 2019-03-15 07:06:35
这是不可能的。请参阅javassist documentation
的泛型是通过擦除技术实现的。编译之后,所有的类型参数都会被删除。例如,假设您的源代码声明了一个参数化类型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
https://stackoverflow.com/questions/55015432
复制相似问题