将泛型类传递给方法

时间:2014-10-24 22:27:57

标签: java generics

我想将List<Object[]>转换为List<ClassX>

为此,我创建了一个方法:

public List mapObjectArrayListToClassList(List<Object[]> objectArrayList, Class genericType){
    //some awesome logic
    return new ArrayList<genericType>();
}

我想按如下方式调用该方法:

mapObjectArrayListToClassList(objectArrayList, ClassX.class);

我收到编译错误:

genericType cannot be resolved to a type

2 个答案:

答案 0 :(得分:3)

泛型类型用法中提供的类型参数必须是类型名称或类型变量,它们不能是对变量或表达式的引用。

使您的方法通用。

public <T> List<T> mapObjectArrayListToClassList(List<Object[]> objectArrayList, Class<T> genericType){
    //some awesome logic
    return new ArrayList<T>(); // or return new ArrayList<>(); 
}

答案 1 :(得分:1)

您必须指定方法的通用类型

 public <T> List<T> mapObjectArrayListToClassList(List<Object[]> objectArrayList, Class<T> genericType)

注意:ListClass等原始类型在Java中编译但不使用它们,它们是邪恶的。