62,614
社区成员
发帖
与我相关
我的任务
分享
package test;
public interface Parent<R> {
public R parentMethod();
}
package test;
public interface Child extends Parent<ActualType>{
public ActualType ChildMethod();
}
package test;
public class ActualType {
}
package test;
import java.lang.reflect.Method;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Method [] methods = Child.class.getMethods();
for(Method method : methods){
Class<?> clazz = method.getReturnType();
System.out.println("Method:"+method.getName()+",ReturnType:"+clazz.getName());
}
}
}
public interface Parent<R> { //这个R是泛型,编译时被擦除,
//因为编译器不知道R将被用户赋予什么类型,但又不能不编译,
//所以统一用Object来管理
public R parentMethod(); //所以这里返回的R就是Object
}
public interface Child extends Parent<ActualType>{ //这个ActualType是具体存在的类型
//编译时编译器能确定这个具体的类型
public ActualType ChildMethod(); //所以这里返回的就是确定的ActualType
}