实现步骤如下:
/*反射调用method具有多态性: * 一、创建接口Hello; * 二、创建接口Hello的实现类1:HelloImpl; * 三、创建接口Hello的实现类2:HelloImpl1; * 四、创建测试类,在测试类的主方法中进行测试,测试内容为: * 1、通过Method method = Hello.class.getMethod("sayHello",String.class);获取接口的sayHello抽象方法; * 2、分别实例化实现类1与实现类2为helloImpl与helloImpl1; * 3、调用method.invoke()方法,将两个实现类分别作为第一个参数传入; * 4、结果表明具有多态性。 * */
接口Hello:
package com.bjpowernode.reflact;
public interface Hello {
void sayHello(String name);
}
实现类HelloImpl:
package com.bjpowernode.reflact;
public class HelloImpl implements Hello{
@Override
public void sayHello(String name) {
System.out.println("你好" + name);
}
}
实现类HelloImpl1:
package com.bjpowernode.reflact;
public class HelloImpl1 implements Hello{
@Override
public void sayHello(String name) {
System.out.println("你好呀" + name);
}
}
测试类:
public class ReflactHello {
@Test
public void testHello(){
//System.out.println(Hello.class);//interface com.bjpowernode.reflact.Hello
/*通过反射机制调用方法*/
try {
/*获取接口的方法*/
Method method = Hello.class.getMethod("sayHello",String.class);
/*实例化实现类*/
HelloImpl helloImpl = new HelloImpl();
HelloImpl1 helloImpl1 = new HelloImpl1();
/*执行实现类的实现方法*/
method.invoke(helloImpl,"张三");//你好张三
method.invoke(helloImpl1,"张三");//你好呀张三
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
证毕.