使用对象实例化集合

Ste*_*roz 2 java generics collections

我想做以下(这不起作用,它只是解释这个概念).知道怎么做吗?

Class type;
if (/* something */)
  type = String.class;
else
  type = Boolean.class;

return new ArrayList<type>();
Run Code Online (Sandbox Code Playgroud)

ArrayList<type>不起作用.我尝试过type.getClass(),也没用.

Tom*_*icz 5

将其包装到方法中,将类型作为泛型传递Class,让Java为您完成剩下的工作.无需任何条件分支.

<T> List<T> newList(Class<T> type) {
    return new ArrayList<T>();
}
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样使用它:

List<String> list = newList(String.class);
Run Code Online (Sandbox Code Playgroud)

请记住,T不必在泛型类级别指定.您可以为方法指定泛型类型,从而使其成为示例代码中的泛型方法.