RTTI学习笔记
来源:互联网 发布:变声器玩游戏知乎 编辑:程序博客网 时间:2024/06/01 10:12
- RTTI is short for RunTime Type Information 。
- 三种方式
A.class
a.getClass()
Class.forName(A) - Class.forName(A),A要有完整的包名。
- Class的NewInstance()方法需要类有默认构造器。
- 建议使用.class的方式获取Class对象,简单,安全(编译时进行类型检查),高效(减少了方法调用)。
- 准备使用一个类的三步:
- 加载。ClassLoader将类的字节码加载到虚拟机然后创建class对象;
- 链接。为static field分配内存,解决对其他class的引用;
- 初始化,先父类,先静态。
引用静态方法(包括构造器,因为默认时静态的)或者静态成员变量(实际上应该是编译时常量)时触发初始化,但是如果静态常量(final static)不是编译时常量也会触发静态初始化。如
class A{final static a=10;//使用a不触发A的静态初始化final static aa=Random.nextInt();//使用aa会使A静态初始化static{//静态块}}
- 泛型不支持协变和逆变,但是能实现协变和逆变,通过< ? extends A>和< ? super A>。
- 加了泛型的class在调用newInstance()的时候会返回精确类型二不是Object,但是< ? super A>依然返回Object,因为编译器无法推导出你要的是第几级父类。
- a.getSuperclass()返回的Class不能用A的直接父类引用,因为编译器不知道是第几级父类,同理该用Class< ? super A>。
- A.class.cast(a)等价于(A)a。
- a instanceof A。
- facede设计模式为一个复杂子系统提供一个简单接口。Façade模式注重简化接口,Adapter模式注重转换接口,Bridge模式注重分离接口(抽象)与其实现,Decorator模式注重稳定接口的前提下为对象扩展功能。
- instanceof/i是Instance():是否是该类或者该类的父类(的父类的…);==/equals():是否是该类。
- 不管你怎么努力,反射总有办法调用类中的方法:包括但不限于callHiddenMethod(),invoke()。
阅读全文
0 0
- MFC rtti 学习笔记
- RTTI学习笔记
- RTTI学习笔记
- 《C++ Primer plus》学习笔记之”RTTI”
- 《C++ Primer plus》学习笔记之”RTTI”
- RTTI关于dynamic_cast的学习笔记(1)
- 菜鸟的Java学习笔记(1)-- RTTI
- C++学习笔记之RTTI(运行时类型识别)
- 编程学习笔记之c++相关::RTTI中的typeid介绍
- C++学习笔记之运行时刻类型识别RTTI
- RTTI和反射笔记
- RTTI&反射笔记
- java RTTI笔记整理
- 笔记:RTTI与多态
- VC学习笔记------有关RTTI
- C++ Primer学习笔记——$21 运行时类型识别(RTTI)
- cocos2d-x学习笔记07:在cocos2d-x中使用RTTI
- 深入浅出MFC学习笔记:MFC六大关键技术仿真之RTTI运行时类型识别
- Android面试(六)JAVA
- 安装easyphp5.2后出现unexpected end of mysql...see log file?不能重启mysql的解决方法
- GHGL项目总结-mybatis
- 【系统测试】性能测试总结
- 双磁盘安装win10和centos 7之后的一些配置工作
- RTTI学习笔记
- js兼容性
- 多线程问题汇总
- Ubiquitous Religions (简单并查集)
- Yii (1.1)调用数据库
- jq绑定事件方法及区别
- Ubuntu上使用gensim计算文档间的相似度
- 常见的垃圾收集器
- HDU 1806 Frequent values(线段树+离散化+二分)