《thinking in java》学习笔记14

来源:互联网 发布:fm球员数据库 编辑:程序博客网 时间:2024/04/29 16:10
类型信息

运行时识别对象和类的信息主要有两种方法
  1. 传统的RTTI,他假定我们在编译时已经知道了所有的类型
  2. “反射”机制,允许在运行时发现和使用类的信息

为什么需要RTTI
  • 面向对象编程中基本的目的是:让代码只操纵对基类的引用
  • 如果某个对象出现在字符串表达式中,toString方法自动被调用
  • 最基本的RTTI使用形式:容器将所有事物当做Object持有,取出时自动将结果转型。java中所有类型转换都是在运行时进行正确性检查的
  • 多态是面向对象编程的基本目标

class对象
  • 它包含了与类有关的信息。Class对象就是用来创建类的所有的“常规”对象的
  • 每个类都有一个class对象,当编译一个新类时就产生一个class对象(保存在.class文件中)
  • 所有类都是在对其第一次使用时动态加载到JVM中的
  • java程序在他开始运行之前并非完全加载,哥哥部分是在必需时才加载的
  • 所有class对象都属于Class类。
  • Class.forname()是取得对象引用的一种方法,用类名的文本作为参数,返回一个class对象的引用
  • 如果已经有一个对象,用getClass()方法来获得class引用,它返回对象的实际类型的class引用
  • chuandigeiforName的字符串中,你必须使用权限定名(含有包)
  • Class的newInstance()方法是实现“虚拟构造器的一种途径”
类字面常量
  • 类字面常量不仅可以应用于普通的类,也可以用于接口,数组一级基本数据类型
  • 当使用.class来创建对class对象的引用时不会自动的初始化该Class对象
  • Class。forName()方法立刻初始化
  • 如果一个值是static final的编译期常量,不需要初始化类就可以读取
  • 如果一个static域不是final的,读取之前要先进行链接和初始化
泛化的class引用
  • Class引用总是指向某个Class对象,他可以制造类的实例,并包含咳作用与这些实例的所有方法代码,他还包含该类的静态成员,因此Class引用表示的就是他所指向的对象的确切类型,而该对象便是Class类的一个对象。
  • Class
0 0
原创粉丝点击