反射_案例与反射_获取字节码Class对象的三种方式
反射_案例
Class对象功能:
获取功能:
1.获取成员变们
Field[] getFields() :获取所有public修饰的成员变量
Field getField(string name) 获取指定名称的public修饰的成员变量
Field[] getDeclaredFields()获取所有的成员变量,不考虑修饰符
Field getDeclaredField(string name)
2.获取构造方法们
constructor<?>[]getconstructors()
constructor<T> getconstructor(类<?>... parameterTypes)
constructor<T> getDeclaredconstructor(类<?>... parameterTypes)
constructor<?>[getDeclaredconstructors()
3。获取成员方法们︰
Method[] getMethods()
Method getMethod(string name,类<?>... parameterTypes)
Method[] getDeclaredMethods()
Method getDeclaredMethod(string name,类<?>... parameterTypes)
4.获取类名
String getName()
反射_获取字节码Class对象的三种方式
1.获取成员变们
Field[] getFields() :获取所有public修饰的成员变量
Field getField(string name) 获取指定名称的public修饰的成员变量
Field[] getDeclaredFields()获取所有的成员变量,不考虑修饰符
Field getDeclaredField(string name)
2.获取构造方法们
constructor<?>[]getconstructors()
constructor<T> getconstructor(类<?>... parameterTypes)
constructor<T> getDeclaredconstructor(类<?>... parameterTypes)
constructor<?>[getDeclaredconstructors()
3。获取成员方法们︰
Method[] getMethods()
Method getMethod(string name,类<?>... parameterTypes)
Method[] getDeclaredMethods()
Method getDeclaredMethod(string name,类<?>... parameterTypes)
4.获取类名
String getName()
Field:成员变量
操作:
1.设置值
void set(Object obj,Object value)
2.获取值
get (Object obj)
3.忽略访问权限修饰符的安全检查
field.setAccessible(true);//暴力反射
class对象功能∶获取功能∶
package day01.Demo01_Day017.da; import java.lang.reflect.Field; /* class对象功能∶ 获取功能∶ 1.获取成员变们 Field[] getFields() Field getField(string name) Field[] getDeclaredFields() Field getDeclaredField(string name) 2.获取构造方法们 constructor<?>[]getconstructors() constructor<T> getconstructor(类<?>... parameterTypes) constructor<T> getDeclaredconstructor(类<?>... parameterTypes) constructor<?>[getDeclaredconstructors() 3。获取成员方法们︰ Method[] getMethods() Method getMethod(string name,类<?>... parameterTypes) Method[] getDeclaredMethods() Method getDeclaredMethod(string name,类<?>... parameterTypes) 4.获取类名 String getName() */ public class ReflectDemo2 { public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException { //1.获取Person的class对象 Class<Person> personClass = Person.class; /* 1.获取成员变们 Field[] getFields() Field getField(string name) Field[] getDeclaredFields() Field getDeclaredField(string name) */ //1. Field[] getFields() Field[] fields = personClass.getFields(); for (Field field : fields) { System.out.println(field); } System.out.println("--------------"); Field a = personClass.getField("a"); //获取成员变量a的值 Person p = new Person(); Object value = a.get(p); System.out.println(value); //设a的值 a.set(p,"张三"); System.out.println(p); System.out.println("====================="); //Field[] getDeclaredFields()//获取所有的成员变量,不考虑修饰符 Field[] declaredFields = personClass.getDeclaredFields(); for (Field declaredField : declaredFields) { System.out.println(declaredField); } //Field getDeclaredField(string name) Field field = personClass.getDeclaredField("d"); //忽略访问权限修饰符的安全检查 field.setAccessible(true);//暴力反射 Object o = field.get(p); System.out.println(o); } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~