Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 试图反映接受泛型类型的方法_Java_Generics_Reflection - Fatal编程技术网

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

Java 试图反映接受泛型类型的方法,java,generics,reflection,Java,Generics,Reflection,我有一个add方法,它将一个泛型对象(即T)添加到一个列表中。我想对这个方法进行单元测试 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); outpu

我有一个add方法,它将一个泛型对象(即T)添加到一个列表中。我想对这个方法进行单元测试

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;
}
公共静态列表添加(列表列表,T){
if(list==null)返回null;
if(t==null)返回列表;
List outputList=新阵列列表(List);
outputList.add(t);//将项追加到列表中
返回输出列表;
}
我正在尝试得到这个方法并进行测试。我已经编写了以下代码片段来获取该方法(我知道这是不正确的)

Class myClass=myClass.Class;
Class clazz=(Class)Class.forName(“java.util.ArrayList”);
方法myObjectMethod=myClass.getMethod(“add”,…)//我需要标识T的类
某些跟踪错误尝试导致我没有遇到任何方法异常

有人能帮我确定这个方法吗?有没有纠正上述代码的指针


谢谢

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

出于兴趣,为什么需要反射来测试此方法?我将在自定义Eclipse中公开此方法。您可能知道,Eclipse使用反射(内省类并建议方法)。。所以,在将它添加到Eclipse之前,我只想进行单元测试。您能解释一下我如何处理一个通用列表,即e列表吗?此外,我如何传递第二个参数的类,即T,以获取该类中的方法。由于类型擦除,就反射而言,泛型不存在。您需要传递
myClass.getMethod(“add”,List.class,Object.class)
才能获得所描述的方法。
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