3.【Java反射机制】通过反射操作类方式 骑猪看日落 2023-10-08 17:28 16阅读 0赞 /** * @author cf * @date 2023/1/29 22:16 * @description 类操作 */ import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; public class ClassUtil { public static void main(String[] args) { // printClassMethodMessage(Object.class); printFieldMessage(MyInterceptor.class); // printConMessage(Integer.class); } /** * 打印类的信息,包括类的成员函数、成员变量(只获取成员函数) * @param obj 该对象所属类的信息 */ public static void printClassMethodMessage(Object obj){ //要获取类的信息 首先要获取类的类类型 Class c = obj.getClass();//传递的是哪个子类的对象 c就是该子类的类类型 //获取类的名称 System.out.println("类的名称是:"+c.getName()); /* * Method类,方法对象 * 一个成员方法就是一个Method对象 * getMethods()方法获取的是所有的public的函数,包括父类继承而来的 * getDeclaredMethods()获取的是所有该类自己声明的方法,不问访问权限 */ Method[] ms = c.getMethods();//c.getDeclaredMethods() for(int i = 0; i < ms.length;i++){ //得到方法的返回值类型的类类型 Class returnType = ms[i].getReturnType(); System.out.print(returnType.getName()+" ---- "); //得到方法的名称 System.out.print(ms[i].getName()+"("); //获取参数类型--->得到的是参数列表的类型的类类型 Class[] paramTypes = ms[i].getParameterTypes(); for (Class class1 : paramTypes) { System.out.print(class1.getName()+","); } System.out.println(")"); } } /** * 获取成员变量的信息 * @param obj */ public static void printFieldMessage(Object obj) { Class c = obj.getClass(); /* * 成员变量也是对象 * java.lang.reflect.Field * Field 类封装了关于成员变量的操作 * getFields()方法获取的是所有的public的成员变量的信息 * getDeclaredFields获取的是该类自己声明的成员变量的信息 */ //Field[] fs = c.getFields(); Field[] fs = c.getDeclaredFields(); for (Field field : fs) { //得到成员变量的类型的类类型 Class fieldType = field.getType(); String typeName = fieldType.getName(); //得到成员变量的名称 String fieldName = field.getName(); System.out.println(typeName+" -- "+fieldName); } } /** * 打印对象的构造函数的信息 * @param obj */ public static void printConMessage(Object obj){ Class c = obj.getClass(); /* * 构造函数也是对象 * java.lang.Constructor 中封装了构造函数的信息 * getConstructors 获取所有的public的构造函数 * getDeclaredConstructors 得到所有的构造函数 */ //Constructor[] cs = c.getConstructors(); Constructor[] cs = c.getDeclaredConstructors(); for (Constructor constructor : cs) { System.out.print(constructor.getName()+"("); //获取构造函数的参数列表--->得到的是参数列表的类类型 Class[] paramTypes = constructor.getParameterTypes(); for (Class class1 : paramTypes) { System.out.print(class1.getName()+","); } System.out.println(")"); } } }
相关 Java反射机制揭秘:如何通过反射操作访问私有字段 Java的反射机制是它强大的内部编程工具。反射允许我们在运行时检查类、接口和对象的信息,甚至可以动态地调用方法或者访问私有字段。 要通过反射访问私有字段,你需要遵循以下步骤: 水深无声/ 2024年09月16日 06:03/ 0 赞/ 16 阅读
相关 Java反射机制:如何通过类名获取对象实例? 在Java中,反射机制允许我们在运行时检查类、字段和方法等信息,并动态创建和操作这些对象。 以下是如何通过类名获取对象实例的步骤: 1. **加载Class**: 首 柔情只为你懂/ 2024年09月13日 14:06/ 0 赞/ 16 阅读
相关 反射机制滥用问题:Java反射操作错误示范 在Java中,反射是一种强大的机制,可以让我们在运行时检查类、方法和字段等信息。然而,如果过度使用反射,可能会带来一些问题,如性能下降、安全性降低等。 下面是一个简单的Jav £神魔★判官ぃ/ 2024年09月11日 19:33/ 0 赞/ 25 阅读
相关 3.【Java反射机制】通过反射操作类方式 / @author cf @date 2023/1/29 22:16 @description 类操作 / imp 骑猪看日落/ 2023年10月08日 17:28/ 0 赞/ 17 阅读
相关 【反射】Java反射机制应用实践 引言 Java反射机制是一个非常强大的功能,在很多大型项目比如Spring, Mybatis中都可以看见反射的身影。通过反射机制我们可以在运行期间获取对象的类型信息,利用 喜欢ヅ旅行/ 2022年06月15日 05:23/ 0 赞/ 176 阅读
相关 通过java反射机制操作对象的属性方法 1. 获得对象的类属性(Class 类) 1. Class 类名.class 2. Class 对象名.getClass() 3. C 左手的ㄟ右手/ 2022年06月06日 09:06/ 0 赞/ 302 阅读
相关 Java反射机制 百科: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法 蔚落/ 2022年05月31日 09:05/ 0 赞/ 237 阅读
相关 通过类的反射机制创建对象 转载:[https://www.cnblogs.com/xingzc/p/5760166.html][https_www.cnblogs.com_xingzc_p_576016 偏执的太偏执、/ 2022年03月22日 19:16/ 0 赞/ 238 阅读
相关 反射机制——通过反射调用service中方法 需求:现在有一群service接口,有同一个方法名称,内部逻辑除了调用不同的调用自身的方法外其他基本都一致,那现在就需要一个独立的方法来勾勒出这个方法 1.SpringCon ﹏ヽ暗。殇╰゛Y/ 2021年09月26日 18:02/ 0 赞/ 753 阅读
还没有评论,来说两句吧...