每日一道面试题之什么是反射?

简介: 每日一道面试题之什么是反射?

反射是一种自我观察的能力,在程序运行时,对任意一个类,我们可通过class、constructor、field、method四个方法获取该类的各个组成部分,在java程序运行时,对任意类,我们都可通过该类了解到其包含哪些属性和方法,这种动态获取当前类对象的信息以及动态调用对象方法的功能来自于反射机制。


对于java而言,可利用反射机制获得类似于动态语言的特点,虽然我们都知道java并不是动态语言,但是java具有一定的动态性,可被称之为“准动态语言”,那么反射就是java被视为动态语言的关键,允许程序在执行期间借助reflection API取得任何类的内部消息并能直接操作任意对象的内部属性及方法,具体过程为Class类封装一个对象和接口运行时的状态,当装载类时,Class类型的对象自动创建,加载完之后在堆内存中,就产生了一个Class类型的对象,一个类只有一个Class对象,这个对象就包含了完整的类的结构信息,我们可以通过这个对象看到类的结构,而这个对象就像一面镜子,透过这个镜子可以看到类的结构,所以我们形象的称之为反射.


反射机制本质上为java先得到class对象后,通过对class对象进行反编译,从而获取对象的各种信息,该过程是从class文件到java文件,是反编译的过程,但我们都知道java是先编译再执行的语言,计算机也不能直接运行java文件,需要先经过JVM编译成class文件后才能运行,该过程是从java文件到class文件,是编译的过程。


反射最大的用途体现在框架,比如:Spring中的Di/IOC、JDBC中的classForName()、SpringBoot的Service注解等,很多开发框架都用到了反射机制,但如果大量使用反射会导致系统性能大打折扣。

相关文章
|
2天前
|
安全 Java API
反射的笔记
反射的笔记
15 0
|
8月前
|
缓存 安全 Java
Java反射常见面试题最新总结
Java反射常见面试题总结
100 0
|
2天前
|
Java 数据库连接 开发工具
Java异常&反射常见面试题及答案
Java异常&反射常见面试题及答案
|
2天前
|
Java API Spring
java中的反射原理,为什么要使用反射以及反射使用场景(面试常问)
java中的反射原理,为什么要使用反射以及反射使用场景(面试常问)
38 0
java中的反射原理,为什么要使用反射以及反射使用场景(面试常问)
|
8月前
|
设计模式 Java 数据库连接
有被问到反射的原理了,看完就学会
有被问到反射的原理了,看完就学会
52 0
|
XML 缓存 Java
反射机制的原理是什么
反射机制的原理是什么
119 0
|
设计模式 监控 Java
谈谈反射机制,动态代理基于什么原理
谈谈反射机制,动态代理基于什么原理
121 0
|
存储 缓存 安全
Java反射进阶—聊聊反射的几个问题
昨天有朋友反映好多反射知识没说到,所以今天算是补充篇,一起看看反射的进阶知识点。
134 0
|
Java C# C++
实战中反射的应用
实战中反射的应用
101 0
实战中反射的应用
|
设计模式 Java 开发者
反射与单例设计模式|学习笔记
快速学习反射与单例设计模式
反射与单例设计模式|学习笔记