RTTI VS Reflection
2019独角兽企业重金招聘Python工程师标准>>>
1.RTTI( Run-Time Type Information)
RTTI( Run-Time Type Information)的主要作用就是运行期鉴定对象的类型,比如需要塑形的时候,使用instanceof判断类型的时候。Java用Class对象实现自己的RTTI功能,在class对象上能得到未知对象的类型信息。有三种方式能得到Class对象
2.反射
反射要解决的的问题是:1.对于不在自己程序空间内的对象该怎么处理,2.通过网络创建与执行位于远程系统上的对象 ,即"远程方法调用",比如进行分布式计算。
针对Field,Method以及Constructor类(每个都实现了Memberinterface——成员接口),它们都新增了一个库:java.lang.reflect。这些类型的对象都是JVM在运行期创建的,用于代表未知类里对应的成员。在class对象上我们可调用方法getFields(),getMethods(),getConstructors(),分别返回用于表示字段、方法以及构建器的对象数组(在联机文档中,还可找到与Class类有关的更多的资料),这样便可用构建器创建新对象,用get()和set()方法读取和修改与Field对象关联的字段,以及用invoke()方法调用与Method对象关联的方法。并且,通过利用Class对象的newInstance()方法可以达到 :“尽管我不知道你的准确类型是什么,但请你无论如何都正确地创建自己。”这样,通过反射java就实现了能对未知对象进行处理的功效。
当然,通过反射还能得到一个类的结构信息,比如通过getSuperclass()就能得到父类Class对象,通过getInterfaces()能得到实现的接口。
参考:java思想四版 第11章
转载于:https://my.oschina.net/u/1583086/blog/360402
RTTI VS Reflection相关推荐
- sun 公司的java 认证
通往Java认证的阶梯(转自ZDNET CHINA)具体最新信息可见JAVA网站 IT认证一直以来都存在很多争议,但是,很多人还是相信有了证书就为你的事业敞开了大门,Sun为Jav ...
- 【Java】反射( reflection)机制 详解
目录 1. 定义 2. 用途(了解即可) 3. 反射的基本信息 4. 反射相关的类(重要) 4.1 Class类(反射机制的起源 ) 4.2 Class类中的相关方法(方法的使用方法在后边的示例当中) ...
- 第 16 章 反射(Reflection)
第 16 章 反射(Reflection) Java 提供的反射機制允許您於執行時期動態載入類別.檢視類別資訊.生成物件或操作生成的物件,要舉反射機制的一個應用實例,就是在整合式開發環境中所提供的方法 ...
- java 运行时类型_Java基础之RTTI 运行时类型识别
运行时类型识别(RTTI, Run-Time Type Identification)是Java中非常有用的机制,在Java运行时,RTTI维护类的相关信息. 多态(polymorphism)是基于R ...
- Java进阶04 RTTI
链接地址:http://www.cnblogs.com/vamei/archive/2013/04/14/3013985.html 作者:Vamei 出处:http://www.cnblogs.com ...
- Think in Java第四版 读书笔记8第14章 类型信息(RTTI与反射)
Java如何在运行时识别对象和类的信息? 1.RTTI(Run-time type information) 它假定我们在编译时已经知道了所有类型 2.反射 它允许我们在运行时发现和使用类的信息 14 ...
- C++反射(Reflection)
库:boost.hana boost.PFR https://www.cnblogs.com/zengkefu/p/6724323.html An Introduction to Reflection ...
- java的rtti_JAVA RTTI
基础类可接收我们发给派生类的任何消息,因为两者拥有完全一致的接口.我们要做的全部事情就是从派生上溯造型,而且永远不需要回过头来检查对象的准确类型是什么.所有细节都已通过多态性获得了完美的控制. 但经过 ...
- PHP的Reflection反射机制
原文地址: http://www.nowamagic.net/php/php_Reflection.php PHP5添加了一项新的功能:Reflection.这个功能使得程序员可以 reverse-e ...
最新文章
- 深度学习框架zf_谈谈深度学习框架的数据排布
- java使用poi操作excel文件_使用 java apache poi 操作 excel xlsx 文件
- python定义变量字符串_Python学习笔记二(变量和字符串)
- PHP curl 参数详解
- struts2+spring 项目中配置tiles的解决方案
- POJ 3621:Sightseeing Cows(最优比率环)
- javascript 中的prompt 用法
- 【最新砍价小程序源码】
- 广告/友情链接/站内信/会员地址/会员银行卡/我的收藏/评论/搜索/用户标签/用户抬头号/签到/我的足迹/我的优惠卷
- 使用FreeHttp强制登出微信公众号登陆状态(实现~原理)
- 雷电模拟器修改系统语言
- WPF字体图标——FontAwesom
- nyoj1328派队方案
- 如何彻底删除hao123主页?
- citra 图形设置_功能强大的图形绘制软件
- Git提交gitlab项目string) [], ParseException +FullyQualifiedErrorId :UnexpectedToken 异常,commit failed
- Redis源码学习(20),学习感悟
- Mysql面试基础知识(全)
- ACM 入门1169
- 可以删除电脑文件的c语言程序,电脑c盘哪些文件可以删除
热门文章
- JS判断页面是否出现滚动条
- 点评2009年十大PHP图书(前言)
- StarCraft的工程师谈美国的游戏开发过程
- 德国政府证实警方使用了 Pegasus 间谍软件
- 奇怪,勒索软件Ryuk 新版本把这些 *UNIX 文件夹列入了黑名单
- (原創) 如何為Blog加上簡體中文(繁體中文)翻譯? (Web) (CSS) (JavaScript)
- vue源码解析推荐文章
- Python进阶三部曲网络编程
- Express使用进阶:cookie-parser中间件实现深入剖析
- thinkphp3.2 不同域名配置不同分组设置