美文网首页
反射-小记

反射-小记

作者: 我只是旁白 | 来源:发表于2017-10-09 19:45 被阅读0次

反射

一,反射机制的定义

指的是可以于运行时加载,探知和使用编译期间完全未知的类.

1,程序在运行状态中, 可以动态加载一个只有名称的类, 对于任意一个已经加载的类,都能够知道这个类的所有属性和方法; 对于任意一个对象,都能调用他的任意一个方法和属性;

2,加载完类之后, 在堆内存中会产生一个Class类型的对象(一个类只有一个Class对象), 这个对象包含了完整的类的结构信息,而且这个Class对象就像一面镜子,透过这个镜子看到类的结构,所以被称之为:反射。

二,反射有哪些优点与缺点

优点:1,可以降低类与类之间的关系 2,将编译时的检查延迟到运行时

缺点:1,性能效率不高,代码的可维护性差

三,如何使用反射

1,获取反射入口类的三种方式

①,对象的getClass()方法;

Class class1=Object.getClass();

②,类的.class(最安全/性能最好)属性;

Object obj=new Object();

Class class2=obj.class;

③,运用Class.forName(String className)动态加载类,className需要是类的全限定名(最常用).

 Class class3=Class.forname(路径);

2,获取成员变量
以上面获取反射的第三种方式为例
①,获取本类所有的成员变量(任意限制)

 1,无参,获取的返回类型为Field数组
 Field[] fields=class3.getDeclaredFields();
 2,有参,获取的返回类型为Field
 Field field=class3.getDeclaredField(变量名);

②,获取本类以及父类的public 修饰的成员变量

 1,无参,获取的返回类型为Field数组
 Field[] fields=class3.getFields();、
 2,有参,获取的返回类型为Field
 Field field=class3.getField(变量名);

3,获取构造方法

①,获取本类所有的构造方法(任意限制)

 1,无参,获取的返回类型为Constructor数组
 Constructor[] constructors=class3.getDeclaredConstructors();
 2,有参,获取的返回类型为Constructor
 Constructor constructor=class3.getDeclaredConstructor(类型.class);

②,获取本类以及父类的public 修饰的构造方法

  1,无参,获取的返回类型为Constructor数组
 Constructor[] constructors=class3.getConstructors();
 2,有参,获取的返回类型为Constructor
 Constructor constructor=class3.getConstructor(类型.class);

4,获取成员方法
①,获取本类所有的成员方法(任意限制)

 1,无参,获取的返回类型为Method数组
 Method[] methods=class3.getDeclaredMethods();
 2,有参,获取的返回类型为Method
 Method method=class3.getDeclaredMethod(类型.class);

②,获取本类以及父类的public 修饰的成员方法

  1,无参,获取的返回类型为Method数组
 Method[] methods=class3.getMethods();
 2,有参,获取的返回类型为Method
 Method method=class3.getMethod(类型.class);

5,以反射的形式创建对象

可以通过构造方法来实例化对象 .newInstance(有参构造传值,无参构造空着即可)

1,属性值的修改

①,获取所需修改变量,同上
②,设置访问权限
field.setAccessible(true);
③,修改属性值
field.set(.newInstance,"内容 ")\

2,方法的调用

①,获取所要调用方法,同上
②,设置访问权限
method.setAccessible(true);
③,调用方法
method.invoke(.newInstance);

相关文章

  • 反射—小记

  • 反射-小记

    反射 一,反射机制的定义 指的是可以于运行时加载,探知和使用编译期间完全未知的类. 1,程序在运行状态中, 可以动...

  • 反射小记

    java代码在计算机内经历的三个阶段: 1 源代码阶段(*.java) 2 Class类对象阶段 3 Runt...

  • Java反射学习小记

    Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类 在运行时构造任意一个类的对象 在运行时判断...

  • Web版扫雷开发小记(3)

    前篇: web版扫雷开发小记(1)web版扫雷开发小记(2)web版扫雷开发小记(3)web版扫雷开发小记(4) ...

  • Java基础之反射

    Java基础之反射 反射基本介绍 反射的使用通过反射调用属性和方法通过反射获取配置文件 反射基本介绍 Java反射...

  • 镜面反射矩阵的推导

    镜面反射是以镜面作为反射平面,实物与反射物到反射平面的距离相等,实物与反射物方向相反,所以,反射矩阵由反射平面确定...

  • reflect.go包学习_之二 指针操作提高反射性能 反射应用

    reflect.go包学习_之二 指针操作提高反射性能 反射应用 反射创建实例 反射信息、反射调用方法、反射修改值...

  • Java互联网公司-经典面试题附答案

    基础:Java 反射?反射有什么缺点?你是怎么理解反射的(为什么框架需要反射)?优点:反射具有解耦性,缺点:反射属...

  • Java反射与joor反射库的使用

    java原生反射的使用 反射构造对象 反射方法 反射字段 joor反射库的使用 github:https://gi...

网友评论

      本文标题:反射-小记

      本文链接:https://www.haomeiwen.com/subject/krwpyxtx.html