首页 > 玄幻奇幻 > 该书审核已经通过fxl > 这里我要谈点题外话

这里我要谈点题外话(1/2)

目录
好书推荐: 末日钢铁战神免费阅读 祸害修仙界免费阅读 盖世农民工免费阅读 星际男神是我爸免费阅读 权臣闲妻免费阅读 红缎军万岁免费阅读 守望之锋免费阅读 百无一用魔法师免费阅读 轻,短,散免费阅读 重生之热血乒乓免费阅读

java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。

java反射(放射)机制:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,perl,python,ruby是动态语言,c++,java,c#不是动态语言。但是java有着一个非常突出的动态相关机制:reflection,用在java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。换句话说,java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起其methods。java反射机制主要提供了以下功能:在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。

有时候我们说某个语言具有很强的动态性,有时候我们会区分动态和静态的不同技术与作法。我们朗朗上口动态绑定(dynamicbinding)、动态链接(dynamiclinking)、动态加载(dynamicloading)等。然而“动态”一词其实没有绝对而普遍适用的严格定义,有时候甚至像面向对象当初被导入编程领域一样,一人一把号,各吹各的调。

一般而言,开发者社群说到动态语言,大致认同的一个定义是:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,perl,python,ruby是动态语言,c++,java,c#不是动态语言。

尽管在这样的定义与分类下java不是动态语言,它却有着一个非常突出的动态相关机制:reflection。这个字的意思是“反射、映象、倒影”,用在java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。换句话说,java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起其methods。这种“看透class”的能力(theabilityoftheprogramtoexamineitself)被称为introspection(内省、内观、反省)。reflection和introspection是常被并提的两个术语。

java如何能够做出上述的动态特性呢?这是一个深远话题,本文对此只简单介绍一些概念。整个篇幅最主要还是介绍reflectionapis,也就是让读者知道如何探索class的结构、如何对某个“运行时才获知名称的class”生成一份实体、为其fields设值、调用其methods。本文将谈到java.lang.class,以及java.lang.reflect中的method、field、constructor等等classes

众所周知java有个object类,是所有java类的继承根源,其内声明了数个应该在所有java类中被改写的方法:hashcode()、equals()、clone()、tostring()、getclass()等。其中getclass()返回一个class对象。

本章未完,点击下一页继续阅读。

目录
新书推荐: 综武,大宋皇子的我总想闯江湖免费阅读 手掌仙灵图我带家族从筑基到飞升免费阅读 这也是江湖?免费阅读 武侠:人在武当,开局无双剑匣免费阅读 都重生了,谁还想理她们?免费阅读 18号公寓免费阅读 山野幽火免费阅读 开局以身化剑,女帝把我养成无上剑帝免费阅读 九龙抬棺免费阅读 凡人策免费阅读
返回顶部