专栏首页用户画像JAVA反射机制

JAVA反射机制

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

JAVA反射(放射)机制:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言。但是JAVA有着一个非常突出的动态相关机制:Reflection,用在Java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起其methods。

一、功能

Java反射机制主要提供了以下功能:

1. 在运行时判断任意一个对象所属的类;

2. 在运行时构造任意一个类的对象;

3. 在运行时判断任意一个类所具有的成员变量和方法;

4. 在运行时调用任意一个对象的方法;

5. 生成动态代理。

有时候我们说某个语言具有很强的动态性,有时候我们会区分动态和静态的不同技术与作法。我们朗朗上口动态绑定(dynamic binding)、动态链接(dynamic linking)、动态加载(dynamic loading)等。然而“动态”一词其实没有绝对而普遍适用的严格定义,有时候甚至像面向对象当初被导入编程领域一样,一人一把号,各吹各的调。 一般而言,开发者社群说到动态语言,大致认同的一个定义是:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言。

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 浅析JVM

    JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模...

    week
  • 将现有项目上传至github

    1、在github上新建远程仓库(空库),注意不要填写readme,不然github会初始化一个仓库,会和本地仓库产生版本冲突。

    week
  • sql sever 索引

    微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,...

    week
  • 为什么越来越多的开发者选择使用Spring Boot?

    使用Java做Web应用开发已经有近20年的历史了,从最初的Servlet1.0一步步演化到现在如此多的框架、库以及整个生态系统。经过这么长时间的发展,Java...

    java架构师
  • 苹果手机短信删除了怎么恢复?简洁又好用

      苹果手机短信删除了怎么恢复?现在觉得使用短信互发消息实在是太low了,如今的社交软件数不胜数,谁还会想到这么古老的方法呢?这些都是一些80后使用的,不过使用...

    科技第六人
  • Java与Kotlin, 哪个是开发安卓应用的首选语言?

    Java是很多开发者创建安卓应用的首选语言。但它在 Android 界的领导地位正受到各种新语言的挑战,Kotlin就是其一。虽然Kotlin最近才开始受到热捧...

    LiveEdu
  • 程序员必须掌握的算法有哪些?谈谈这这几年学过的算法

    由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决...

    帅地
  • 说说程序猿接私活的那些事儿

    现在的程序员大部分肯定不是全能。但移动互联网的火爆,肯给你私活的人,不可能只单单让你做android开发或者ios开发,基本上都是全做,甚至还需要web开发。

    养码场
  • Java失宠,谷歌宣布Kotlin现在是Android开发的首选语言

    谷歌昨天宣布,Kotlin 编程语言现在是 Android 应用程序开发人员的首选语言。

    新智元
  • [海豚区块链] 世界杯来袭,我们都要集体高潮一次

    这个夏天,对于球迷是幸福的。季后赛刚刚结束,詹皇威武的身影还没远去,梅西、C罗、大圣等一众巨星又将开始厮杀,明晚11点,俄罗斯世界杯将会拉起战幕。

    海豚区块链

扫码关注云+社区

领取腾讯云代金券