Java 是否可以通过给定的参数获得泛型类?

Java 是否可以通过给定的参数获得泛型类?,java,generics,reflection,Java,Generics,Reflection,假设我有“java.util.List”作为字符串中的参数。我想将其作为类或类型,类似于: ClassLoader cl=Thread.currentThread().getContextClassLoader(); Class clazz=cl.loadClass("java.util.List<java.lang.String>"); 你的问题是不明确的,我假设你想用他的类名创建一个类实例,所以你要寻找的是方法 但是正如@GhostCat在评论中指出的,您不能创建字符串列表,

假设我有“
java.util.List
”作为字符串中的参数。我想将其作为类或类型,类似于:

ClassLoader cl=Thread.currentThread().getContextClassLoader();
Class clazz=cl.loadClass("java.util.List<java.lang.String>");

你的问题是不明确的,我假设你想用他的类名创建一个类实例,所以你要寻找的是方法

但是正如@GhostCat在评论中指出的,您不能创建字符串列表,因为类型擦除,您只能创建对象的通用列表,
您应该了解泛型类型是如何工作的:

运行时中的Java擦除泛型。从来没有像
列表那样的

如果您想要一个
类型
表示
列表
,它应该是
参数化类型
。您可以使用我的utlity类来构造一个

public static ParameterizedType createParameterizedType(Class<?> rawType, Type ownerType, Type... actualTypeArguments);

Type listString = createParameterizedType(List.class, null, String.class);

你的要求并不十分明确。您似乎不知道诸如原始类型和类型擦除之类的核心内容。在尝试将反射与泛型相结合之前,您应该先阅读相关书籍并学习这些基础知识(鉴于泛型类型在运行时会被删除,这有点不确定)。我知道类型是在编译类型上控制的,它们在运行时被擦除。我的问题不是关于这一点,而是,如果我们以前知道类的泛型类型(例如,它是java.util.List),那么如何加载泛型类型的类。对不起,但您似乎根本不了解泛型是如何工作的。对于字符串列表和整数列表,没有特定的二进制类。只有一个List类在内部使用
对象
。一个实现服务于所有不同的实例化。因此:真正地转向书本。你声称知道,但你的评论倾向于。。。那么,你缺乏知识,你不理解你读到的东西。徐院长的回答正是我想要的。从你正在阅读的课程中进行一些阅读和理解可能是一个不错的选择。也许,在一些泛型之后。
public static ParameterizedType createParameterizedType(Class<?> rawType, Type ownerType, Type... actualTypeArguments);

Type listString = createParameterizedType(List.class, null, String.class);
List list = ...;
List<String> listString = (List<String>)list;