反射
2022-05-16 19:25:00 18 举报
AI智能生成
Java反射
作者其他创作
大纲/内容
框架的概念:半成品软件。可以在框架的基础上进行软件开发,简化编码
1.可以在程序的运行过程中。操作这些对象
反射:将类的各个部分封装为其他对象,这就是反射机制
反射:框架的灵魂
2.可以解耦,提高代码的可扩展性
好处
创建类
成员变量
构造方法
成员方法
按照3部分编译成字节码文件
Source源代码阶段
将字节码用类加载器加载进内存,通过Class类对象描述所有的字节码文件,将该字节码的三个部分分装为对象
People p=new People();Filed a=Class对象.getFiled(\"name\
设置值
People p=new People();String name=a.get(p);
获取值
a.setAccessible(true);//暴力反射
暴力反射
Filed类(成员变量类)
Object people=constractor.newInstance(\"张三\
初始化对象
constructor.setAccessible(true);//暴力反射
constractor类(构造方法类)
People p=new People();method.invoke(p);
执行方法
method.setAccessible(true);
String name=method.getName();
获取方法名称
Method(成员方法类)
字节码的三类对象
Class类对象阶段
创建对象
Runtime对象
Java代码在计算机中的的三个阶段
反射的基本概念
Class.ForName(\"全类名\"):将字节码文件加载进内存,返回Class对象
Class类对象阶段(此阶段有类名无对象所以用类名创建)
类名.class:通过类名的属性class获取
Runtime对象(此阶段已经创建了对象)
对象.getClass:父类Object类中定义的getClass方法获取(因为对象继承了Object的所有方法)
获取Class对象的方式(分别对应反射的3个阶段)
获取所有public修饰的成员变量
Field[] fileds =Class对象.getFields();
获取指定的public修饰的成员变量
Field name = Class对象.getField(\"name\");
获取所有成员变量
Field[] declaredFields = Class对象.getDeclaredFields();
获取指定的成员变量,如果获取的是age是私有变量,则忽略安全检查(暴力破解)
暴力反射:age.setAccessible(true);
Field age = Class对象.getDeclaredField(\"age\");
获取成员变量们
Constructor[] arr=Class对象.getConstructors();获取所有public修饰的构造方法
Constructor[] arra=Class对象.getDeclaredConstructors();获取所有构造方法
Constructor constructor=Class对象.getDeclaredConstructor(String.class);
获取指定的成员变量,如果获取的是age是私有变量,则忽略安全检查(暴力映射)
获取构造方法们
Method[] methods=Class对象.getMethods();//获取public修饰的方法
Method method=Class对象.getMethod(\"getName\
Method[] mhs=Class对象.getDeclaredMethods();//获取所有方法
Method mh=Class对象.getDeclaredMethod(\"getName\
获取成员方法们
String name=Class对象.getName();
获取类名
获取功能
Class对象的使用
Class对象
反射
0 条评论
回复 删除
下一页