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

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

反射是一种自我观察的能力,在程序运行时,对任意一个类,我们可通过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注解等,很多开发框架都用到了反射机制,但如果大量使用反射会导致系统性能大打折扣。

相关文章
|
缓存 安全 Java
【面试题精讲】反射的应用场景
【面试题精讲】反射的应用场景
|
2月前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
XML 安全 Java
面试---反射
面试---反射
44 0
|
6月前
|
设计模式 安全 Java
面试官:说说反射的底层实现原理?
面试官:说说反射的底层实现原理?
92 0
|
Java 编译器
【java面试】- java反射以及优缺点
java反射以及优缺点
236 0
|
Java 数据库连接
【Java面试】反射中,Class.forName和classloader的区别是什么?
【Java面试】反射中,Class.forName和classloader的区别是什么?
85 0
|
6月前
|
XML Java 数据库连接
Java知识面试题复习(五)JavaIO流和反射
Java知识面试题复习(五)JavaIO流和反射
66 1
|
6月前
|
Java API Spring
java中的反射原理,为什么要使用反射以及反射使用场景(面试常问)
java中的反射原理,为什么要使用反射以及反射使用场景(面试常问)
66 0
java中的反射原理,为什么要使用反射以及反射使用场景(面试常问)
|
6月前
|
Java 程序员
面试题:Java里面的反射
面试题:Java里面的反射
57 0
|
Java 数据安全/隐私保护
【面试题精讲】何谓反射?
【面试题精讲】何谓反射?