zoukankan      html  css  js  c++  java
  • JAVA编程思想读书笔记(三)--RTTI

    接上篇JAVA编程思想读书笔记(二)

    第十一章 运行期类型判定

    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方法
  • 相关阅读:
    HyperLogLog
    Bitmaps
    正向代理与反向代理的概念
    性能优化——应用服务器性能优化
    Memcached的优点
    前端基础之BOM和DOM
    性能优化——Web前端性能优化
    亡命逃窜---三维搜索
    Sum It Up -- 深搜 ---较难
    排序---对二维数组的排序
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/7411452.html
Copyright © 2011-2022 走看看