由于业务需要在接口方法中使用了泛型,多个实现类的相同方法传入的实参类型不同,想用反射查看具体的实参类型,进而转换为实参的类型。
但使用中遇到了一个问题,接口定义的方法只有一个“T”参数,反射method.getParameterTypes()却得到两个参数类型,请问各位大牛java内部的实现方式是怎样的?
另外,使用jdk1.8时还会出现反射后的两个参数顺序颠倒的情况,还请各位帮忙分析一下,具体代码如下:
接口
public interface ProcessTestService<T> {
void test(T param) throws Exception;
}
实现类
public class ProcessTestServiceImpl implements ProcessTestService<Integer> {
@Override
public void test(Integer param) throws Exception {
}
}
测试类
public class TestDamo {
public static void main(String[] args) {
ProcessTestService processTestService = new ProcessTestServiceImpl();
Method[] methodArray = processTestService.getClass().getDeclaredMethods();
labe:for (Method method : methodArray) {
if ("test".equals(method.getName())) {
for (Class clazz : method.getParameterTypes()){
System.out.println(clazz);
}
}
}
}
}