博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
反射机制
阅读量:4582 次
发布时间:2019-06-09

本文共 742 字,大约阅读时间需要 2 分钟。

在java运行时获取任意一个类的属性、方法、构造函数,并可以修改属性、调用方法、创建对象,这种动态获取类的信息以及动态调用对象的方法的功能来自于java语言的反射机制。

Reflection是java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过Reflection API取得任意一个已知名称的class的内部信息。

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

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

Reflection和introspection是常被并提的两个术语。

Class是Reflection的基石,针对任何你想透视的类,唯有先为它产生一个Class对象,接下来才能经由后者唤起为数十多个的Reflection APIs.

得到途径有三种:getClass(),Class.forName,ClassgetSuperclass()。

转载于:https://www.cnblogs.com/wtyqer/p/3530349.html

你可能感兴趣的文章
lucene之solr京东案例
查看>>
Java开发Maven环境配置和介绍
查看>>
架构-LAMP特级学习(网站服务器监控)
查看>>
边界检测
查看>>
leetcode Happy Number
查看>>
MP3文件格式解析
查看>>
UVA Live 7770 模拟
查看>>
[LeetCode] Unique Paths II
查看>>
【Python】[面向对象的高级编程] 元类 ---听说这个很难理解
查看>>
taskAffinity 和allowTaskReparenting的用途
查看>>
LNMP环境下安装freeradius+radius manager3.9
查看>>
cocos2d-x性能优化的那些事
查看>>
LightOJ 1007 - Mathematically Hard
查看>>
前端和算法实现:给网站上加上自己的水印(简单+复杂)
查看>>
react-native学习(RN)--之Window环境下搭建环境配置,以及初始化建立react-native项目,(真机和模拟器运行的相关错误解决办法,android打包报错)...
查看>>
WPF路由事件学习(一)
查看>>
特殊字符导致jquery-mobile 挂起(firefox控制台报错 malformed URI sequence)
查看>>
Java3-1
查看>>
系统分析与设计 作业一
查看>>
大数据入门---------------------Java部分开始
查看>>