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