博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA编程思想读书笔记(三)--RTTI
阅读量:4594 次
发布时间:2019-06-09

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

接上篇

第十一章 运行期类型判定

No1:

对于作为程序一部分的每个类,它们都有一个Class对象。换言之,每次写一个新类时,同时也会创建一个Class对象(更恰当的说,是保存在一个完全同名的.class文件中)。在运行期,一旦我们想生成那个类的一个对象,用于执行程序的Java虚拟机(JVM)首先就会检查那个类型的Class对象是否已经载入。若尚未载入,JVM就会查找同名的.class文件,并将其载入。所以Java程序启动时并不是完全载入的,这一点与许多传统语言都不同。

一旦那个类型的Class对象进入内存,就用它创建那一类型的所有对象。

No2:

RTTI(运行期类型判定)包括

1.类型强转

2.Class.forName("类全名“);--返回一个句柄--类名.class

3.instanceof

No3:

Class c = Class.forName("类全名”);

c.getMethods();--获取类的方法

c.getMethods();--获取类的构造器

No4:

RTTI:run-time type identification

多态就是基于RTTI实现的,RTTI的功能主要是由Class实现的

多态的原理:Java中每个对象都有相应的Class类对象,因此,我们随时能通过Class对象知道某个对象“真正”所属的类。无论我们对引用进行怎样的类型转换,对象本身所对应的Class对象都是同一个。当我们通过某个引用调用方法时,Java总能找到正确的Class类中所定义的方法,并执行该Class类中的代码。由于Class对象的存在,Java不会因为类型的向上转换而迷失。

No5:

Human personA = new Human();Class c1 = personA.getClass();String name1 = c1.getName();

 

getClass()就是得到对应Class对象的引用

No6:

Class c2 = Class.forName("Human");String name2 = c2.getName();

 

forName()方法接收一个字符串作为参数,该字符串是类的名字。这将返回对应的Class类对象

No7:

Class c3 = Woman.class;String name3 = c3.getName();

 

Woman.class方法是直接调用类的class成员,这将返回对应的Class对象

No8:

Class类的方法:

c1.getName();--返回类的名字c1.getPackage();--返回类所在的包c1.newInstance();--创建相应类的对象c1.getFields();--返回所有的public数据成员c1.getMethods();--返回所有的public方法

 

转载于:https://www.cnblogs.com/anni-qianqian/p/7411452.html

你可能感兴趣的文章
上传图片时,CMKY转RGB
查看>>
【POJ 2777】 Count Color(线段树区间更新与查询)
查看>>
Storm项目:流数据监控1《设计文档…
查看>>
南阳oj 语言入门 A+B paoblem 题目477 题目844
查看>>
ffmpeg 内存池
查看>>
双语小说阅读:《谁动了我的奶酪》
查看>>
linux touch和vi建立的文件是什么文件类型的
查看>>
3-9
查看>>
导航右侧添加按钮、隐藏导航条和状态栏
查看>>
第二阶段冲刺6
查看>>
Java中final关键字的用法
查看>>
URL重写
查看>>
快速超越Chrome 微软IE9最新功能详解
查看>>
今天写一注册机时遇到猥亵的cookie设置。
查看>>
22万个木箱!TWaver 3D极限压榨
查看>>
NPOI使用手册
查看>>
GIT 常用命令
查看>>
php接收二进制文件转换成图片
查看>>
C++虚函数原理(转)
查看>>
InnoDB存储引擎介绍-(6) 一. Innodb Antelope 和Barracuda区别
查看>>