下面先写一个普通的
1、接口
package com.linfeng.pojo;
public interface HelloService {
public void sayHello(String name);
}
2、实现类
package com.linfeng.pojo;
public class HelloServiceImpl implements HelloService{
public void sayHello(String name) {
System.out.println("hello"+name);
}
}
3、测试
import com.linfeng.pojo.HelloService;
import com.linfeng.pojo.HelloServiceImpl;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class MyTest {
public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
HelloServiceImpl service = new HelloServiceImpl();
service.sayHello("林峰");
}
}
下面我们使用反射机制进行创建sayhello方法,核心Method(类中的方法)
import com.linfeng.pojo.HelloService;
import com.linfeng.pojo.HelloServiceImpl;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class MyTest {
public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
// HelloServiceImpl service = new HelloServiceImpl();
// service.sayHello("林峰");
//下面我们使用反射机制进行创建sayhello方法,核心Method(类中的方法)
HelloServiceImpl target = new HelloServiceImpl();
//获取sayhello名称对应的method类
Method method = HelloService.class.getMethod("sayHello", String.class);//类中的方法,类型
//通过method可以执行sayhello方法调用
/*
invoke是method类中的一个方法,表示执行方法的调用
参数:
1、object ,表示对象的。要执行这个对象的方法
2、object...args 方法执行时的参数值
返回值:Object
* */
//method.invoke所表达的意思是:执行target对象sayhello方法,参数是林峰
Object ret = method.invoke(target,"林峰");
//method代表sayHello方法,这个方法关联着一个对象,这里我们是target对象
}
}
class.getMethod
Method method = HelloService.class.getMethod(“sayhello”, String.class,Integer.class);
提出问题?
public Method getMethod(String name, Class<?>... parameterTypes)
加入,该方法的参数有多个该怎么办?
parameterTypes参数是一个类对象数组,按声明的顺序标识方法的形式参数类型。
Method.invoke
public Object invoke(Object obj,Object… args)
- public Object invoke(Object obj, Object… args)
-
表示执行方法的调用
- 参数:
-
1.Object,表示对象,要执行这个对象的方法
-
2.Object...args,方法执行时的参数值
- 返回值:
-
Object:方法执行后的返回值
/*
invoke是method类中的一个方法,表示执行方法的调用
参数:
1、object ,表示对象的。要执行这个对象的方法
2、object…args 方法执行时的参数值
返回值:Object
* */
//method.invoke所表达的意思是:执行target对象sayhello方法,参数是林峰