反射-反射概述(动态语言的例子)
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()方法-->得到完整的“包类”名称
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义