反射-反射概述(动态语言的例子)

java是一个静态语言,因为反射让所以让java语言变成了准动态语言
讲解:当我们要使用java写外挂时,我们就会用的反射,因为当游戏运行时,我们怎么把代码注入到游戏中,java代码中的反射可以做到这一点,通过运行时改变游戏量的数据
动态语言
是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。通俗点说就是在运行时代码可以根据某些条件改变自身结构。
>主要动态语言:Object-C、C#、JavaScript、PHP、Python等。
静态语言
与动态语言相对应的,运行时结构不可变的语言就是静态语言。如Java、C、C++。
Java不是动态语言,但Java可以称之为“准动态语言”。即Java有一定的动态性,我们可以利用反射机制获得类似动态语言的特性。Java的动态性让编程的时候更加灵活!
//javaScript编写的动态代码,他的变量没有什么区分都是用var代替,动态语言可以在运行的时候改变自身的结构
function f(){
var    x="var a=3;b=5;alert(a+b)";
cval(x);//这个方法可以执行x的静态字符串中的代码,var a=3;b=5;alert(a+b),他在程序运行时,改变了x的值,原值为String,运行后,结果等于a+b,所以变成了int类型

}
复制代码
Java Reflection

Reflection(反射)是Java被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection APl取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。
Class c = Class.forName("java.lang.String")
加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,我们形象的称之为:反射
正常方式:引入需要的
"包类"名称-->通过new实例化—->取得实例化对象
反射方式:实例化对象-->getClass()方法-->得到完整的“包类”名称
复制代码

 

posted @   hollg  阅读(74)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示