试图反映一种接受泛型类型的方法

时间:2012-04-10 17:37:59

标签: java generics reflection

我有一个方法add,它将一个通用对象(即T)添加到List中。我想对这种方法进行单元测试。

public static <T> List<T> add(List<T> list, T t) {
    if(list == null) return null;
    if(t == null) return list;

    List<T> outputList = new ArrayList<T>(list);
    outputList.add(t); // append item into list

    return outputList;
}

我正在尝试获取方法并对其进行测试。我编写了以下代码片段来获取方法(我知道这是不正确的)。

Class myClass = Myclass.class;
Class<List<T>> clazz = (Class<List<T>>) Class.forName("java.util.ArrayList");
Method myObjectMethod = myClass.getMethod("add", ...) // i need to identify T's class

某些路径错误尝试会导致我遇到NoSuchMethod异常。

有人可以帮我识别这种方法吗?任何纠正上述代码的指针?

谢谢!

1 个答案:

答案 0 :(得分:3)

clazz应该是List.class,而不是ArrayList.class。您必须使用方法定义中使用的确切原始类型。