首页 > 编程知识 正文

java怎么调用类方法,method方法

时间:2023-05-03 12:06:28 阅读:10876 作者:1920

Java中Method类和invoke方法的详细信息

在说Method和invoke的使用之前先来看一个小例子。 知道了那个就ok了

公共类方法invoke {

类动画{

公共语音打印(

system.out.println (' animal.print ) ) );

}

}

class Cat extends Animal {

@Override

公共语音打印(

system.out.println('cat.print ) );

}

}

publicstaticvoidmain (字符串[ ] args ) throws Exception { )。

methodanimalmethod=animal.class.getdeclaredmethod (' print ';

methodcatmethod=cat.class.getdeclaredmethod (' print ';

Animal animal=new Animal (;

Cat cat=new Cat (;

animalmethod.invoke(cat; //cat相当于调用父类的print方法

animalmethod.invoke(animal; animal.print (相当于;

catmethod.invoke(cat; 相当于cat.print (;

catmethod.invoke(animal;

}

}

执行结果如下

Cat.print (

Animal.print (

Cat.print (

exceptioninthread ' main ' Java.lang.illegalargumentexception : objectisnotaninstanceofdeclaringclass

at sun.reflect.nativemethodaccessorimpl.invoke0(native method ) )

at sun.reflect.nativemethodaccessorimpl.invoke (unknown source ) )。

at sun.reflect.delegatingmethodaccessorimpl.invoke (unknown source ) )。

在代码中,Cat类覆盖父类的animal print ()方法,通过反射分别为print () )检索Method对象。 最后,分别使用Cat和Animal实例对象执行print ()方法。 其中,animalMethod.invoke(animal )和cat method.invoke (cat ) cat )的示例对象的真实类型与method的声明Classs相同,并按预期打印。 在Animalmethod.invoke(Cat )中,cat是animal的子类,因此根据多态性的特性,子类调用父类的方法,并在方法执行时动态链接到子类的实现方法。 因此,这里调用Cat.print (方法; 在Catmethod.invoke(Animal )中,传递的参数类型animal是父类,但这次会抛出异常,因为它希望调用子类cat的方法。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。