编程语言中高级特性:反射
反射机制
这里以java反射机制加以说明,其他编程语言基本类似。
JAVA反射机制是在运行状态中
,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
反射机制应用场景
- 通过配置信息调用类的方法
- 结合注解实现特殊功能
- 按需加载jar包或class
- 逆向代码 ,例如反编译
可以说反射是框架设计的灵魂。
反射机制优缺点
优点:
自由,使用灵活
,不受类的访问权限限制。可以根据指定类名、方法名来实现方法调用,非常适合实现业务的灵活配置。在框架开发方面也有非常广泛的应用,特别是结合注解的使用。
缺点:
也正因为反射不受类的访问权限限制,其安全性低,很大部分的java安全
问题都是反射导致的。
相对于正常的对象的访问调用,反射因为存在类和方法的实例化过程,性能
也相对较低
破坏
java类封装性,类的信息隐藏性和边界被破坏
反射有哪些功能
- 获取Class对象,注意不是类。
- Class对象动态生成
- 获取类名、修饰符、包信息、属性、方法、构造函数等,包括私有属性和方法。
- 访问类注解信息
- 获取泛型信息,及参数类型。
- 动态调用类方法
python中的反射
Python中的反射和其他编程语言不同,Python中不管变量还是方法都是属性
import types
class Test:
vars = "11"
def ff1(self):
print(f"ff1方法..")
def ff2(self):
print(f"ff2方法..")
cls = Test()
for attr in dir(cls):
mothod = getattr(cls, attr)
if type(mothod) is types.MethodType:
mothod()
# 输出:
# ff1方法..
# ff2方法..
图文详解java反射机制及常用应用场景
Java反射(通俗易懂)
最后更新于 2022-11-09 09:28:17 并被添加「」标签,已有 809 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
此处评论已关闭