JavaSE基础(day22)(1)反射技术(2)Field(3)Constructor(4)Method(5)内省

版权声明:cxyo.cn https://blog.csdn.net/weixin_44075537/article/details/85002189

1.反射技术 (难点 尽量掌握)
可以动态的创建对象 并且动态的获取类中的 构造
属性(成员变量 + get set 方法) 方法 。并且能进行动态的调用。

2.反射中涉及到的API
java.lang.Class 用来描述其它类类型的一个类型
java.lang.reflect.Constructor 构造类型 描述构造函数的
java.lang.reflect.Feild 描述字段的类型
java.lang.reflect.Method 描述方法的类型
java.lang.reflect.Array 动态数组

3.java中创建对象的方法 (补充)
3.1new 直接创建
3.2静态工厂方法方式 (想想单例模式如何获取对象)
3.3实例工厂方法方式 通过一个对象 来获取另外一个对象
3.4反射
4.如何获取到Class 对象
4.1通过相应的类型的对象 来调用 getClass() 方法 就可以获取到对应的Class对象
4.2通过相应的类型 调用 class 字段 就可以获取到相应类型的对象
4.3 基本类型的 Class 对象获取
Integer.TYPE 和 Integer.class 是不同的
4.4 使用 包名 + 类名的 方式 java.lang 中类型也没有特权 (必须记住的)
String str = “java.util.Date”;
Class.forName(str);
注意需要处理检查异常
5.写一个java中的员工类型 放入一个包 com.xdl.bean 中
字段有 String name int age double salary 要求私有 并提供get set
提供无参构造 和 带参构造 和 toString 方法
写一个测试程序 有一个字符串 “com.xdl.bean.Emp” 来获取Class 类型的对象
并根据 Class 对象 来创建 Emp 类型的对象 。

6.Class 类型中常用的API
Field getField(String name) 根据一个名字 获取公开属性的描述
Field getDeclaredField(String name ) 根据一个名字 获取属性的描述
// 构造相关信息的获取
Constructor getConstructor(参数说明) 得公开构造的说明
Constructor getDeclaredConstructor(参数说明) 得构造说明
Constructor[] getConstructors() 得到所有的公开的构造方法
// 方法相关信息的获取
Method getMethod(String name, Class<?>… parameterTypes)
Method[] getMethods()

7.Field 具体的操作
getName() 得到字段对应的名字
getType() 得到字段对应的类型
通过Field 给具体的对象赋值
赋值使用 set(具体的对象,值)
获取值 使用 get(具体的对象)
如果要访问私有属性 需要使用 setAccesible(true);

遍历Emp 类型的对象的所有属性 如果是 salary字段 则通过这个字段给 Emp对象
赋值 12345678 最后验证是否赋值成功。其它字段打印 名字和类型即可。

8.Constructor 类型具体的操作
能不能通过 Class 类型的对象 来获取 Emp的全参构造

9.Method 类型的具体操作
方法的修饰符 public private …
getModifiers()
方法的返回值类型
getReturnType()
方法的名字
getName()
方法的参数
getParameterTypes()
调用这个方法
invoke(Object obj,Object…parameters)
10.内省
10.1 javabean
是java中 符合一定规范的 可复用的java类。
需要符合以下规范
javabean 必须放在一个 包中
javabean 必须是公开的类型
javabean 必须提供无参构造
javabean 中的属性是私有的 并且提供相应的get set 方法
boolean 类型的 get 方法 以 is开头
一般要实现序列化接口 (对象形式的文件读写 网络传输)
10.2 内省技术
是针对javabean 另一套 和 反射技术一样的 获取类信息的API
Introspector

视频
javaseday22-1.反射简介
https://v.qq.com/txp/iframe/player.html?vid=z0800758vwz
javaseday22-2.java创建对象创建Class方式
https://v.qq.com/txp/iframe/player.html?vid=c0800lxh75w
javaseday22-3.Class类型中API介绍和属性获取
https://v.qq.com/txp/iframe/player.html?vid=p0800rsqj4e
javaseday22-4.使用反射获取属性构造相关信息
https://v.qq.com/txp/iframe/player.html?vid=q0800yb8gvl
javaseday22-5.反射获取类的构造和方法信息
https://v.qq.com/txp/iframe/player.html?vid=s0800wyeei8
javaseday22-6.方法调用和javabean内省机制
https://v.qq.com/txp/iframe/player.html?vid=r08002tg2fk

代码
https://pan.baidu.com/s/1t0zWS2C-BOBzi8bYyqVoaA

猜你喜欢

转载自blog.csdn.net/weixin_44075537/article/details/85002189