JAVA反射解析-getDeclaredMethod方法
程序员文章站
2022-05-03 23:49:09
解析反射类java.lang.Class中的属性和方法1、public Method getDeclaredMethod(String name, Class>… parameterTypes)常用反射获取对象的方法Class extends UserController> clazz = userController.getClass();//<1>处代码在获取到Class对象之后,便可以获取有参方法① Method method = clazz....
解析反射类java.lang.Class中的属性和方法
1、public Method getDeclaredMethod(String name, Class<?>… parameterTypes)
常用反射获取对象的方法
- Class<? extends UserController> clazz = userController.getClass();
//<1>处代码
在获取到Class对象之后,便可以获取有参方法
① Method method = clazz.getDeclaredMethod(String name, Class<?>… parameterTypes) //<2>代码
获取本类中的所有方法
② Method method = clazz.getMethod(String name, Class<?>… parameterTypes)
继续解析①中传入参数的代码 Method method = clazz.getDeclaredMethod(“setUserService”, UserService.class)
第一个参数是方法名,第二个参数是方法参数,传入这两个参数之后,便可以根据方法名和方法参数通过反射获取带有参数的方法method。然后继续执行 method.invoke(Object obj, Object… args),第一个参数为实例对象,第二个参数为实参。总结:通过反射获取方法名,然后invoke方法注入方法对象和实参。//<3>处代码
代码如下
类名和属性
public class UserController {
private UserService userService;
public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
}
public class UserService {
}
测试类(重要)
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class Test {
public static void main(String[] args) throws Exception {
UserController userController = new UserController();
UserService userService = new UserService();
System.out.println(userService);
//<1>获取Class对象
Class<? extends UserController> clazz = userController.getClass();
//<2>获取想要注入的属性
Field field = clazz.getDeclaredField("userService");
//获取属性名称
String name = field.getName();
//获取set方法
name = "set" + name.substring(0, 1).toUpperCase() + name.substring(1, name.length());
System.out.println(name);
//获取set方法对象
Method method = clazz.getDeclaredMethod(name, UserService.class);
System.out.println(method + "***");
//<3>执行set方法
method.invoke(userController, userService);
System.out.println(userController.getUserService());
}
}
输出结果
com.spring.code.ioc.define.UserService@7bb11784
setUserService
public void com.spring.code.ioc.define.UserController.setUserService(com.spring.code.ioc.define.UserService)***
com.spring.code.ioc.define.UserService@7bb11784
本文地址:https://blog.csdn.net/weixin_46106332/article/details/109269332
上一篇: ArrayList集合的嵌套遍历
推荐阅读
-
java poi解析word的方法
-
java基于dom4j包实现对XML解析的方法
-
java根据方法名称取得反射方法的参数类型示例
-
Java源码解析阻塞队列ArrayBlockingQueue常用方法
-
java反射获取和调用方法
-
Java源码解析HashMap的keySet()方法
-
java源码解析之String类的compareTo(String otherString)方法
-
使用maven运行Java Main的三种方法解析
-
java中使用dom4j解析XML文件的方法教程
-
Java 反射常用方法 博客分类: JavaJava Web 反射reflectlist转化为map获取私有变量的值访问私有变量