JAVA中通过反射机制调用方法
-
反射机制,让代码具有通用性,可变化的内容都是写到配置文件中,
将来修改配置文件之后,创建的对象就不一样,调用的方法也不同了,
但是java源代码不需要做任何改动。 -
List item
调用方法四要素
方法:methods
对象:o
实参:“admin”,“123”
返回值:retValue -
根据方法名和形参列表获取method
Method methods = c.getDeclaredMethod(“login”, String.class, String.class); -
最重要的的方法:invoke(); invoke:调用
invoke()用于调用方法
public class MethodTest04 {
public static void main(String[] args) throws Exception{
//不使用反射机制调用对象
UserService userService = new UserService();
userService.login("zhangsan","123");
Class c = Class.forName("reflection.method.UserService");
Object o = c.newInstance();
//根据方法名和形参列表获取method
Method methods = c.getDeclaredMethod("login", String.class, String.class);
//反射机制调用方法中
// 最重要的的方法:invoke(); invoke:调用
//调用方法四要素
//方法:methods
// 对象:o
// 实参:"admin","123"
// 返回值:retValue
Object retValue = methods.invoke(o,"zhangsan","123");
System.out.println(retValue);
}
}
- 创建一个测试类:
public class UserService {
public boolean login(String admin, String password){
if (admin.equals("zhangsan")){
System.out.println(password.equals("123"));
return true;
}
return false;
}
public String test(){
return "?";
}
public void logout(){
System.out.println("你已成功退出");
}
}