美文网首页编程Java世界
java基础之反射机制整理

java基础之反射机制整理

作者: 先生zeng | 来源:发表于2019-12-14 18:14 被阅读0次

在Effective Java中有一条规则是关于反射:接口优先于反射机制
在探讨这个规则的使用和理解之前我想重新整理下关于我对反射的认知:

反射,就是指在运行时去获取已经加载在jvm中的class文件中的信息然后去获取该类的实例、属性、方法的,这种运行时动态获取该类信息和调用对应方法的功能就称为java的反射机制。

原理就是: 获取已经加载好的class文件里面的信息,也就是字节码文件对象,解析里面的信息后获取到对应的Class对象,该对象包含把成员属性、方法等等信息组装好,我们可以去获取,调用和set值。

使用的三种方式:

  1. 对象实例调用getClass()方法.
  2. 类名获取.Class。
  3. Class.forName("类名"),返回。

不想贴代码了。

一般来说,在我们实际的应用程序中,我基本上很少用这个东西,我在手写一个Spring demo框架的时候,在实现IOC功能是,会去获取全路径下的类,通过反射去获取该对象实例,存入IOC容器,所以一般来说,

反射功能只是在设计时被用到。通常,普通应用程序在运行时不应该以反射的方式访问对象。

反射的效率是很低的,因为需要解析字节码文件内容,然后组装后返回。

通过反射返回的Class实例会包含所代表类的构造器Constructor(构造器),Method(方法)和Field(域)。这些对象提供了“通过程序来访问类的成员名称,域类型,方法签名等信息”的能力。

而且,Constructor,Method和Field实例使你能够通过反射机制操作它们的底层对等体(就是这个类的构造器,方法,域),通过调用Constructor,Method和Field实例上的方法,你可以构造底层类的实例,调用底层类的方法,并访问底层类中的域。反射机制允许一个类使用另一个类,即使当前者被编译的时候后者还根本不存在。

使用反射机制的缺点:

1,丧失了编译时类型检查的好处,包括异常检查;
2,执行反射访问所需要的代码非常笨拙和冗长。
2,性能损失。反射方法调用比普通方法调用慢了很多。

对于有些程序,它们必须用到在编译时无法获取的类,但是在编译时存在适当的接口或者超类,通过它们可以引用到这个类。如果是这种情况,就可以以反射方式创建实例,然后通过它们的接口或者超类,以正常的方式访问这些实例。

相关文章

  • Java基础之反射

    Java基础之—反射(非常重要)Java中反射机制详解Java进阶之reflection(反射机制)——反射概念与...

  • java基础之反射机制整理

    在Effective Java中有一条规则是关于反射:接口优先于反射机制在探讨这个规则的使用和理解之前我想重新整理...

  • Java中反射的用途

    Java的反射机制是Java特性之一,反射机制是构建框架技术的基础所在。灵活掌握Java反射机制,对大家以后学习框...

  • 第6讲 | 动态代理是基于什么原理?

    谈谈 Java 反射机制,动态代理是基于什么原理? 典型回答 反射机制是 Java 语言提供的一种基础功能,赋予程...

  • Java反射机制入门

    Java反射机制入门 一、什么是反射 JAVA反射机制(The JAVA reflection mechanism...

  • 反射之一

    总结内容源自一下文章粗浅看java反射机制反射机制应用实践谈谈java反射机制Java Reflection(反射...

  • 反射之二

    总结内容源自一下文章粗浅看java反射机制反射机制应用实践谈谈java反射机制Java Reflection(反射...

  • JAVA反射机制知识

    导读 移动开发知识体系总章(Java基础、Android、Flutter) 反射机制的概念 反射机制的主要功能 与...

  • 反射之三

    总结内容源自以下文章 粗浅看java反射机制 反射机制应用实践 谈谈java反射机制 Java Reflectio...

  • Java反射机制-----反射基础

    前言   接上两节,本想在本节介绍MVP和MVVM框架的搭建和实现原理。但是研究MVVM框架时发现,DataBin...

网友评论

    本文标题:java基础之反射机制整理

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