2019独角兽企业重金招聘Python工程师标准>>>

1.RTTI( Run-Time Type Information)

RTTI( Run-Time Type Information)的主要作用就是运行期鉴定对象的类型,比如需要塑形的时候,使用instanceof判断类型的时候。Java用Class对象实现自己的RTTI功能,在class对象上能得到未知对象的类型信息。有三种方式能得到Class对象

1. Class.forName("packagename + classname")
2.ClassName.class
3.object.getClass()

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相关推荐

  1. sun 公司的java 认证

    通往Java认证的阶梯(转自ZDNET   CHINA)具体最新信息可见JAVA网站         IT认证一直以来都存在很多争议,但是,很多人还是相信有了证书就为你的事业敞开了大门,Sun为Jav ...

  2. 【Java】反射( reflection)机制 详解

    目录 1. 定义 2. 用途(了解即可) 3. 反射的基本信息 4. 反射相关的类(重要) 4.1 Class类(反射机制的起源 ) 4.2 Class类中的相关方法(方法的使用方法在后边的示例当中) ...

  3. 第 16 章 反射(Reflection)

    第 16 章 反射(Reflection) Java 提供的反射機制允許您於執行時期動態載入類別.檢視類別資訊.生成物件或操作生成的物件,要舉反射機制的一個應用實例,就是在整合式開發環境中所提供的方法 ...

  4. java 运行时类型_Java基础之RTTI 运行时类型识别

    运行时类型识别(RTTI, Run-Time Type Identification)是Java中非常有用的机制,在Java运行时,RTTI维护类的相关信息. 多态(polymorphism)是基于R ...

  5. Java进阶04 RTTI

    链接地址:http://www.cnblogs.com/vamei/archive/2013/04/14/3013985.html 作者:Vamei 出处:http://www.cnblogs.com ...

  6. Think in Java第四版 读书笔记8第14章 类型信息(RTTI与反射)

    Java如何在运行时识别对象和类的信息? 1.RTTI(Run-time type information) 它假定我们在编译时已经知道了所有类型 2.反射 它允许我们在运行时发现和使用类的信息 14 ...

  7. C++反射(Reflection)

    库:boost.hana boost.PFR https://www.cnblogs.com/zengkefu/p/6724323.html An Introduction to Reflection ...

  8. java的rtti_JAVA RTTI

    基础类可接收我们发给派生类的任何消息,因为两者拥有完全一致的接口.我们要做的全部事情就是从派生上溯造型,而且永远不需要回过头来检查对象的准确类型是什么.所有细节都已通过多态性获得了完美的控制. 但经过 ...

  9. PHP的Reflection反射机制

    原文地址: http://www.nowamagic.net/php/php_Reflection.php PHP5添加了一项新的功能:Reflection.这个功能使得程序员可以 reverse-e ...

最新文章

  1. 深度学习框架zf_谈谈深度学习框架的数据排布
  2. java使用poi操作excel文件_使用 java apache poi 操作 excel xlsx 文件
  3. python定义变量字符串_Python学习笔记二(变量和字符串)
  4. PHP curl 参数详解
  5. struts2+spring 项目中配置tiles的解决方案
  6. POJ 3621:Sightseeing Cows(最优比率环)
  7. javascript 中的prompt 用法
  8. 【最新砍价小程序源码】
  9. 广告/友情链接/站内信/会员地址/会员银行卡/我的收藏/评论/搜索/用户标签/用户抬头号/签到/我的足迹/我的优惠卷
  10. 使用FreeHttp强制登出微信公众号登陆状态(实现~原理)
  11. 雷电模拟器修改系统语言
  12. WPF字体图标——FontAwesom
  13. nyoj1328派队方案
  14. 如何彻底删除hao123主页?
  15. citra 图形设置_功能强大的图形绘制软件
  16. Git提交gitlab项目string) [], ParseException +FullyQualifiedErrorId :UnexpectedToken 异常,commit failed
  17. Redis源码学习(20),学习感悟
  18. Mysql面试基础知识(全)
  19. ACM 入门1169
  20. 可以删除电脑文件的c语言程序,电脑c盘哪些文件可以删除

热门文章

  1. JS判断页面是否出现滚动条
  2. 点评2009年十大PHP图书(前言)
  3. StarCraft的工程师谈美国的游戏开发过程
  4. 德国政府证实警方使用了 Pegasus 间谍软件
  5. 奇怪,勒索软件Ryuk 新版本把这些 *UNIX 文件夹列入了黑名单
  6. (原創) 如何為Blog加上簡體中文(繁體中文)翻譯? (Web) (CSS) (JavaScript)
  7. vue源码解析推荐文章
  8. Python进阶三部曲网络编程
  9. Express使用进阶:cookie-parser中间件实现深入剖析
  10. thinkphp3.2 不同域名配置不同分组设置