美文网首页
2021-11-21 反射的学习总结

2021-11-21 反射的学习总结

作者: ToughtZhang | 来源:发表于2021-11-21 22:13 被阅读0次

1 、 反射的定义 : Reflect    就是把Java类的各个成分 映射成一个个java 对象。在运行状态中, 对于任意一个类,突出任意类。 能够得到这个类的属性和方法。 这种动态获取信息以及动态调用对象的方式叫做java 的反射机制。

2 、反射机制的功能:

1 、运行时判断一个对象所属的类: 正常的时候 我们用 instanceof 来判断 对象是否属于某个类。 有的时候, 类 继承一个父类,不能严格判断出是自己的类,而不是父类。  根据下图 所示 不能判断是 父类 还是子类

返回不能判断的地方。

所以需要 调用队形的 getClass 方法  ,和 具体的 Class 进行对比,来判断是否 是相同的。o.getClass().equals(ClassA.class)

2 、 运行时构造一个对象 。

构建对象的有三种方式 : new     反序列化    拷贝   然后就是反射

1  、Class.formName   、Object.class    obj.getClass   来获取class 对象

 newInstance  可以创建一个不带参数的对象。可以通过构造方法来创建一个对象

2 、创建接口的对象。 Retrofit 通过动态代理的方式来创建对象

Retrofit 动态代理创建队形

3 在运行的 获取任意 一个类所具有的成员 和方法 。

4 在运行的时候调用 任意一个对象的方法。

5  生成动态代理。

解决的问题,1    访问一些framework的变量或者调用方法,在没有依赖包的时候,可以正常编译运行。2      运行时,获取进程中单例对象,通过使用单例对象来进行处理.比如启动界面,热修复dex包的使用。3  启动Activity , ActivityThread     main   不是 一个Thead ,继承ClientTransactionHandler    。       ApplicationThreadextends IApplicationThread.Stub     bindApplication     startActivityNow  ————》performLaunchActivity  

最终启动

handleApplicationInfoChanged----》scheduleRelaunchActivity ---》case RELAUNCH_ACTIVITY:handleRelaunchActivityLocally((IBinder) msg.obj); ----》handleRelaunchActivity --》handleRelaunchActivityInner-》handleLaunchActivity ---》handleLaunchActivity---》performLaunchActivity    

实现反射的类 : Class    Method  Constructure  Array

最终调用的是 native方法,需要有classLoader , shouldInitialize 为true 的方式 method 的 invoke 方法,最终有代理类 MethodAccessSor 来实现 Constructor 的主要方法。 newInstance

4  反射的使用

PO 对象是复杂的对象 可以和 数据库进行 映射    POJO  plain old java Object  简单的对象(简单的构造方法  和 get  set 方法);

1 、 copy 一个对象的所有属性 object

//通过默认构造方法创建一个新的对象

Object objectCopy=classType.getConstructor(newClass[]{}).newInstance(new Object[]{});
//获得对象的所有属性15Field fields[]=classType.getDeclaredFields();

//调用原对象的getXXX()方法33Object value=getMethod.invoke(object,new Object[]{});

5 、自己写的案例

自己写的例子

相关文章

  • 2021-11-21 反射的学习总结

    1 、 反射的定义 : Reflect 就是把Java类的各个成分 映射成一个个java 对象。在运行状态中, ...

  • 反射的学习总结

    反射的定义 Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任何一个对象,都...

  • Java学习总结-反射

    反射经常听到这个词,但是总是不理解这个意思。今天便来理解一下反射这个概念,为什么说在框架设计中,反射用到的比较多。...

  • 反射学习总结

    在java的世界里,万物皆对象。多个具有相同特征的实例可以抽象出一个类,而所有类也可以再进一步抽象化,就得到一个描...

  • iPad绘画Procreate常用快捷键和技巧大总结

    iPad绘画Procreate常用快捷键和技巧大总结 原创2021-11-21 16:33·木白木容vlog[ht...

  • 2019-02-23 java的反射学习总结一

    学习总结: 反射是对类的使用,与正常使用类的过程相反、倒置,所以叫反射。动态语言。 1 Class对象的获取方法有...

  • Java反射学习总结

    反射的概述 什么是Java的反射机制 Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和...

  • Java反射机制学习总结

    介绍反射机制 1.反射机制的应用场景 逆向代码、动态生成类框架等,使用反射机制能够大大的增强程序的扩展性。 2.反...

  • Java学习总结之反射

    反射库提供了一个非常丰富且精心设计的工具集,以便能够动态编写能够操纵Java代码的程序。这项功能被大量应用于Jav...

  • spring学习总结(一) 反射

    spring的两大核心是IOC(控制反转)和AOP(面向切编程),首先我们先研究下什么是反射。 反射 在传统的开发...

网友评论

      本文标题:2021-11-21 反射的学习总结

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