黑马程序员技术交流社区

标题: Java如何使用反射调用父类的方法? [打印本页]

作者: 何小红    时间: 2012-9-21 22:08
标题: Java如何使用反射调用父类的方法?
Java如何使用反射调用父类的方法?
作者: 张 涛    时间: 2012-9-21 22:11
子类继承和重写父类的方法,调用父类哪个方法?重写前的吗?重写前的方法,子类不具有,无法调用。若调用其他从父类继承的方法,直接使用getMethod方法得到method对象,再使用invoke方法调用就行了。
作者: haha_hyq    时间: 2012-9-21 22:15
public static Method getDeclaredMethod(Object object, String methodName, Class<?> ... parameterTypes){
         Method method = null ;
         for(Class<?> clazz = object.getClass() ; clazz != Object.class ; clazz = clazz.getSuperclass()) {
             try {   
                 method = clazz.getDeclaredMethod(methodName, parameterTypes) ;   
                 return method ;  
             } catch (Exception e) {
             }
         }
         return null;
    }


调用就不说了,需要判断一下,
if( return null){
    //没有这个方法
}

作者: 程振    时间: 2012-9-21 23:20
  1. import java.lang.reflect.InvocationTargetException;
  2. import java.lang.reflect.Method;

  3. class Father{
  4.         public void fromFather(){
  5.                 System.out.println("Method of Father");
  6.         }
  7. }
  8. class Son extends Father{
  9. }

  10. public class ReflectionDemo {
  11.         public static void main(String[] args) throws Exception {
  12.                 Class sonClass = Son.class;
  13.                 Class fatherClass = sonClass.getSuperclass();
  14.                
  15.                 Method[] method = fatherClass.getMethods();
  16.                 for(Method tmp : method){
  17.                         if(tmp.getName() == "fromFather")
  18.                         tmp.invoke(fatherClass.newInstance(), new Object[]{});
  19.                 }
  20.         }
  21. }
复制代码

作者: 冯祖焱    时间: 2012-9-22 12:14
使用Class的getDeclaredMethod方法,它可以获取父类的方法或者非public方法,然后调用Method的invoke方法就OK了
作者: 冯祖焱    时间: 2012-9-22 12:14
使用Class的getDeclaredMethod方法,它可以获取父类的方法或者非public方法,然后调用Method的invoke方法就OK了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2