反射获取对象的属性 动态反射是什么?

[更新]
·
·
分类:互联网
2690 阅读

反射获取对象的属性

动态反射是什么?

动态反射是什么?

动态语言没有反射的概念,因为动态语言按照名称或者符号表寻址,它的一切都是动态的。那么为什么出现反射这种技术呢?是因为静态语言在动态行为上有很大不足。
泛型不属于动态行为。泛型本身是一种基于模板的机制,相当于带有占位符的代码模板交给编译器 JIT 翻译,用具体类型替换占位符生成多套不同的代码。
动态通常是运行期的行为,一般用于调整算法、数据结构、解析未知的数据。注意解析 XML 或者 JSON 行为不属于动态,因为 XML 或者 JSON 是自我描述的文本,数据本身自带数据格式。
反射属于动态行为。大多数 ORM 都是基于反射实现,因为 ORM 不确定有哪些对象或者对象属性名和数据库字段名不一致,所以必须建立一种映射关系。

php 什么是反射?

php反射api由若干类组成,可帮助我们用来访问程序的元数据或者同相关的注释交互。借助反射我们可以获取诸如类实现了那些方法,创建一个类的实例(不同于用new创建),调用一个方法(也不同于常规调用),传递参数,动态调用类的静态方法。
反射api是php内建的oop技术扩展,包括一些类,异常和接口,综合使用他们可用来帮助我们分析其它类,接口,方法,属性,方法和扩展。这些oop扩展被称为反射。

既然Java反射可以访问和修改私有成员变量,那封装成private还有意义么?

反射是java中的超能力。通过反射来访问private变量,有点像从四维空间造访三维空间一样,三维空间的大门对它并不起作用。
但是拥有超能力的同时,也意味着承担更多风险,所以反射并不是一个在日常场景中经常使用的工具,只有做一些通用的框架性的功能时会用到,并且需要做大量的异常处理。
所以说,private对于正常操作来说,还是起到了限制作用的。