读书笔记——类型信息

  本片将讨论java是如何让我们在运行时识别对象和类的信息。主要有两种方式:①“传统的”RTTI(Run Time Type Identification)——它假定我们在编译时已经知道了所有的类型②“反射”机制,它允许我们在运行时发现和使用类的信息

1、为什么需要RTTI

2、Class对象

  2.1Class.forName("类名");

  2.2类字面常量——类名.class

  2.3泛化的Class引用——提供编译期类型检查

3、类型转换前先做检查

  向上转型为什么不需要做检查,向下转型就需要做检查?以Shape为例,Shape导出类有Circle、Square和Triangle,由于知道Circle肯定是Shape,所以编译器允许自由的向上转型。向下转型,Shape转换为Circle,你怎么知道这个形状到底是什么具体的形状呢,所以编译器不允许自由向下转换,需要先做一个检查。

  

时间: 2024-12-23 15:18:17

读书笔记——类型信息的相关文章

读书笔记 effective c++ Item 47 使用traits class表示类型信息

STL主要由为容器,迭代器和算法创建的模板组成,但是也有一些功能模板.其中之一叫做advance.Advance将一个指定的迭代器移动指定的距离: 1 template<typename IterT, typename DistT> // move iter d units 2 void advance(IterT& iter, DistT d); // forward; if d < 0, 3 // move iter backward 从概念上来说,advance仅仅做了it

读书笔记: 博弈论导论 - 12 - 不完整信息的静态博弈 贝叶斯博弈

读书笔记: 博弈论导论 - 12 - 不完整信息的静态博弈 贝叶斯博弈 贝叶斯博弈(Bayesian Games) 本文是Game Theory An Introduction (by Steven Tadelis) 的学习笔记. 不完整信息的静态博弈(Incomplete information static games) 不完整信息博弈意味着玩家之间缺乏共识(common knowledge),具体指的是其它对手的行动集.结果集和收益函数等信息. 对不完整信息博弈的处理方法来自于Harsan

读书笔记: 博弈论导论 - 14 - 不完整信息的静态博弈 机制设计

读书笔记: 博弈论导论 - 14 - 不完整信息的静态博弈 机制设计 机制设计(Mechanism Design) 本文是Game Theory An Introduction (by Steven Tadelis) 的学习笔记. 机制设计的概念 机制设计的目标是设计一个可以达到期望收益的博弈. 由于这是根据博弈结果来推导博弈的形式,也被称为反向博弈论(reverse game theory). 这个理论明显在经济和政治方面有很多用途. 我们假象这样一个例子: 某个政府需要设计一个关于化工厂的环

读书笔记: 博弈论导论 - 17 - 不完整信息的动态博弈 建立信誉

读书笔记: 博弈论导论 - 17 - 不完整信息的动态博弈 建立信誉 建立信誉(Building a Reputation) 本文是Game Theory An Introduction (by Steven Tadelis) 的学习笔记. 为什么我们要建立良好的信誉?为什么我们更愿意和有信誉的人交往? 本章从囚徒困境这个问题,证明了即使在2阶段的囚徒困境中,如果一方有可能选择合作(也就是沉默),另一个方在第一阶段也有可能选择合作. 让我们回忆一下囚徒困境. 囚徒困境的均衡是双方都告密. 在有限

《C#图解教程》读书笔记之二:存储、类型和变量

一.类型初窥:掀起你的盖头来 (1)C程序是一组函数和数据类型,C++程序是一组函数和类,而C#程序是一组类型声明: (2)类型是一种模板:模板本身不是数据结构,但它详细说明了由该模板构造的对象的特征: (3)C#提供了16种预定义类型:13种简单类型(数值类型:int,float,double,decimal等:非数值类型:bool,char),3种非简单类型(object,string,dynamic): 所有的预定义类型都直接映射到底层的.NET类型.C#的类型名称其实就是.NET类型的别

读书笔记-APUE第三版-(6)系统数据文件和信息

常见系统数据文件 下表列出了常见的系统数据文件及其查找函数. 以/etc/passwd文件为例,读取数据的程序基本框架如下: void get_pw_entry() { struct passwd *ptr; setpwent(); while ((ptr = getpwent()) != 0) { -- } endpwent(); return ptr; } 每个数据文件都提供了一个get方法返回文件下一个记录项. set方法充值当前位置到文件开始处. end方法关闭数据文件. 表格中的get

C++primer读书笔记9转换与类类型

有时候指定了自己类类型来表示某种类型数据如SmallInt,那么为了方便计算就会指定一个转换操作符,将该类类型在某种情况下自动的转换为指定的类型 <1>转换操作符 operator type(); 转换函数必须是类成员函数,不能指定返回类型,并且形参列表必须为空,并且通常不应该改变转换对象,所以操作符通常定义为const成员. #include <iostream> using namespace std; class SmallInt { public: SmallInt(int

【读书笔记】C#高级编程 第七章 运算符和类型强制转换

(一)运算符 类别 运算符 算术运算符 + - * / % 逻辑运算符 & | ^ ~ && || ! 字符串连接运算符 + 增量和减量运算符 ++ -- 移位运算符 << >> 比较运算符 == != < > <= >= 赋值运算符 = += -= *= /= %= &= |= ^= <<= >>= 成员访问运算符(用于对象和结构) . 索引运算符(用于数组和索引器) [] 类型转换运算符 () 条件

《JAVA编程思想》学习笔记——第十四章 类型信息

运行时类型信息使得你可以在程序运行时发现和使用类型信息. 主要有两种方式:一种是"传统的"RTTI, 它假定我们在编译时已经知道了所有的类型;另一种是"反射"机制,它允许我们在运行时发现和使用类的信息. Class对象 类是程序的一部分,每个类都有一个Class对象.换言之,每当编写并且编译一个新类,就会产生一个Class对象(更恰当的说,是被保存在一个同名的.class文件中).为了生成这个类的对象,运行这个程序的Java虚拟机(JVM)将使用被称为"类