假设我有“java.util.List<java.lang.String>
”作为String中的参数。我想把它作为类或类型,类似的东西:
ClassLoader cl=Thread.currentThread().getContextClassLoader();
Class clazz=cl.loadClass("java.util.List<java.lang.String>");
有可能吗?
例如,以下代码有效:
ClassLoader cl=Thread.currentThread().getContextClassLoader();
Class clazz=cl.loadClass("java.util.List");
答案 0 :(得分:1)
运行时Java擦除通用。永远不会有Class
List<String>
。
如果您想要Type
代表List<String>
,则应为ParameterizedType
。您可以使用我的utleity类GenericUtil
构建一个
public static ParameterizedType createParameterizedType(Class<?> rawType, Type ownerType, Type... actualTypeArguments);
Type listString = createParameterizedType(List.class, null, String.class);
如果您想构建List<String>
的实例,可以将List
强制转换为List<String>
List list = ...;
List<String> listString = (List<String>)list;
答案 1 :(得分:0)
你的问题很模糊,我假设你想通过他的类名创建一个类实例,所以你要找的是方法 Class.forName()
然而正如@GhostCat在评论中指出的那样,你无法创建一个String列表,因为TypeErasure,你只能创建Object的泛型列表, 您应该了解泛型类型的工作原理:Here