02_java反射

2020-09-28  本文已影响0人  lww文


反射:将类的各个组成部分封装为其他 对象 这就是反射机制

好处:

1:在程序运行过程中操作这写对象  例如:idea 我们可以快速知道 类中的方法

 2:解耦 填好 程序的可扩展性

1:获取class 对象的方式

1;Class.forname("全类名")

 1.1:多用于配置文件 将类名配置在文件中 加载力

2:通过类名的属性获取  类名.class

2.1: 多用于参数传参

3:对象.getClass()  :getClass()在obect中定义的

3.1 多用于字节码对象获取

结论:

同一个字节码文件(*.class)在一次程序运行过程中 只会被加载一次 不论通过哪一种 方式获取class 对象都是一个

=======================

2;Class对象功能

1:获取成员变量们

  1.1getFields()获取所有public  修饰的成员变量

  1.2getField(string name)获取某个  public  修饰的 成员变量

  1.3:getDeclaredFields()获取所有的成员变量 不考虑修饰符

  1.4:getDeclaredField(string name)

2;获取构造方法们

  2.1" getConstrusctors()

  2.2   getConstrusctor(类名)

 2.3   getDeclaredConstrusctors()

 2.4 2.3   getDeclaredConstrusctor(类名)

3:获取成员方法们

3.1 getMehods();

3.2 getMehod(string f方法名,类名);

3.3 getDeclaredMehods()

3.3 getDeclaredMehod (string f方法名,类名)

4:获取类名

getName();

=============

Field 成员变量

操作:   修饰的 成员变量

obj:一般都是 Field所属的类的 类对象

 1:设置值: void set(Object obj,Object value)

 2:   获取值  get(Object obj)

3;忽略访问对象修饰符安全检查  setAccessible(true)  暴力反射

操作:   获取所有的成员变i量

如果获取的是 私有修饰符的 成员变量 需要 忽视修饰符的安全检查

setAccessible(true)  暴力反射

=============

Construsctor :获取构造方法

操作

1:创建 对象  new instance(Object ...)

如果构造函数中需要参数   (string name,int age)等等参数

在使用反射创建构造函数 需要传递 参数的类型的class l例如:

String.class, int.class

===============

Method 方法对象

1:执行方法  method.invok(Object ob, Object...args)

2:获取方法名称  

method.getName();

案例1

创建配置 文件

2:加载配置文件获取信息  3:使用反射执行方法

上一篇 下一篇

猜你喜欢

热点阅读