如何在运行时指定genric类型

San*_*osh 1 java

我有一个arraylist,我需要在运行时指定类型.

ArrayList<String> alist = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

我需要在运行时指定类型"String".我怎样才能做到这一点.它不应该是静态的.

sta*_*ker 5

这是不可能的,因为类型擦除 - 编译器删除所有与类型参数相关的信息并在类或方法中键入参数的过程.

它仅在编译期间可用,以检查类型.

编辑:作为您的问题的解决方法,您可以使用ArrayList<Object>它将允许您将任何类型添加到ArrayList.在这种情况下,您可以使用instanceof检查类型并转换为具体类型.