反射记录
Java反射是一种机制,可以在运行时检查、调用和实例化类,无需在编译时确定类的名字。使用反射可以动态地获取类的信息,并在运行时操作类的属性、方法和构造函数。
反射常用的方法名及作用介绍如下:
1. `getClass()`:获取对象的Class对象,即获取对象所属的类的信息。
2. `getMethods()`:获取公共方法的数组,包括从父类继承的方法。
3. `getDeclaredMethods()`:获取所有方法的数组,包括私有方法。
4. `getMethod(String name, Class<?>... parameterTypes)`:根据方法名和参数类型获取方法对象。
5. `getDeclaredMethod(String name, Class<?>... parameterTypes)`:根据方法名和参数类型获取私有方法对象。
6. `invoke(Object obj, Object... args)`:调用方法,obj表示调用该方法的对象,args表示方法的参数。
7. `getField(String name)`:根据字段名获取字段对象。
8. `getDeclaredField(String name)`:根据字段名获取私有字段对象。
9. `newInstance()`:创建对象实例。
10. `getConstructor(Class<?>... parameterTypes)`:根据参数类型获取构造函数对象。
11. `getDeclaredConstructor(Class<?>... parameterTypes)`:根据参数类型获取私有构造函数对象。
12. `newInstance(Object... initargs)`:根据构造函数创建对象实例。
通过使用这些反射方法,可以实现一些动态的操作,比如动态调用方法、获取和修改字段的值、创建对象实例等。但是由于反射涉及到动态性和灵活性,效率上可能不如直接调用,因此在使用时需要注意性能问题。
反射常用的方法名及作用介绍如下:
1. `getClass()`:获取对象的Class对象,即获取对象所属的类的信息。
2. `getMethods()`:获取公共方法的数组,包括从父类继承的方法。
3. `getDeclaredMethods()`:获取所有方法的数组,包括私有方法。
4. `getMethod(String name, Class<?>... parameterTypes)`:根据方法名和参数类型获取方法对象。
5. `getDeclaredMethod(String name, Class<?>... parameterTypes)`:根据方法名和参数类型获取私有方法对象。
6. `invoke(Object obj, Object... args)`:调用方法,obj表示调用该方法的对象,args表示方法的参数。
7. `getField(String name)`:根据字段名获取字段对象。
8. `getDeclaredField(String name)`:根据字段名获取私有字段对象。
9. `newInstance()`:创建对象实例。
10. `getConstructor(Class<?>... parameterTypes)`:根据参数类型获取构造函数对象。
11. `getDeclaredConstructor(Class<?>... parameterTypes)`:根据参数类型获取私有构造函数对象。
12. `newInstance(Object... initargs)`:根据构造函数创建对象实例。
通过使用这些反射方法,可以实现一些动态的操作,比如动态调用方法、获取和修改字段的值、创建对象实例等。但是由于反射涉及到动态性和灵活性,效率上可能不如直接调用,因此在使用时需要注意性能问题。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示