RTTI

来源:互联网 发布:什么营销软件好 编辑:程序博客网 时间:2024/06/07 11:57

运行时的类型信息:

一、Type(类型):如人事系统,部门,人员,工资,这都是类型,开发中对这些信息要进行分类。

  class(类):现实中的问题用程序表示,就形成类(.java 文件),静态。

二、Object(对象):现实中的对象,计算机中用不同数据来区分。

           现实中人类型,具体一个人就是对象(因为每个人的基本信息不一样,会做的事也不一样),

            计算机表示:人:Person class(类) 静态,对象:可以new(新建)对象,其实就是放数据,

                                                      人(类级别):都有名字,工号(类成员变量)

           对象(对计算机来说:就是数据不一样):每一人名字,工号不一致。            

           人(类级别):都会做饭(类的方法)

                           对象:但是做饭的方法(什么时候火大一些,小一些等等)各有不同,结果也不一样。                                 

  1、  类对象(Class object):.class 编译后文件装入内存后,变成类对象。

  2、建立对象几种方式

        1>Person  p=new  Person():

        2> Class p=Class.forName("ftypeinfo.toys.Person");//

                   得到person的类对象的指针,可直接生成p.newInstance();

                   必须要抓住异常,运行时检查错误。

       3>  Class<Person> p=Person.class;和2>相等: 得到person的类对象的指针,可直接生成p.newInstance();

                  不用抓异常,编译时检查错我。

三、实例(也叫对象:因为所有的都可以看成对象):一个类对象可以形成多个实例,

       实例=数据。

           Person  p1=p.newInstance(); 通过实例化,可以得到p1对象。

所以一般用第一种方法 Person  p=new  Person() 建立一个对象:

四、reference:像电视,空调的遥控器,不知道用什么词语翻译比较好?就是和对象连接起来,并且让对象去做一些事情。                            

  1、普通类reference(ordinary Class references):

   2、限制类reference(generic Class references):

          Class<?>:表示指针可以指向任何类对象

          Class<? extends Number>:表示指针可以指向Number且子类对象

        java.lang.Class<T>: 当装入一个.Class 文件,java.lang.Class 建立这个类的实例。

       *装入内存后的所有.class 文件:就是 java.lang.Class 的对象,所以也叫类对象。

   结论:

     例子:如果公司的人员管理,

               静态: 建立Person 类型,定义会做的事(方法),和一些个人特点(类变量,常量)

                动态:领导需要查看每个人(对象)的具体情况。

 方法一:  Person  p=new  Person(“wang”);

                Person  p1=new  Person("yang");

                1、JVM开始到method area 去查找是否装入Person 类,否,则装入

                2、装入之后去堆中建立数据,即对象,p1和这个对象连接。

 方法二: Class p=Class.forName("ftypeinfo.toys.Person");//得到一个Person  的reference

                   Person  p1=p.newInstance(); //弄上数据,就又得到一个新的对象。

                  1、java.lang.Class 这个类为每个进入内存的类建立对象,

                  2、这个类的常量池存入了装入每个类的reference和对应的类名。

               感觉从速度上来说,快多了。

 方法三: Class p=Person.class;;//得到一个类指针

                   Person  p1=p.newInstance(); //弄上数据,就又得到一个新的对象。

                   和方法二差不多,比方法二的好处:不用抓异常。

               

               根据需要建立多个对象,我一直理解p,p1  就是一个an object reference。

               计算机怎么实现:                            

                 1》person.class 装入内存:把类中的信息存入常量池,把指令装入Rom内存。

                 2》类中所有的方法:存入方法表(方法表存在方法区域)

                3》堆:存入这个类的实例数据,存入P,指向“方法表”

                                    

0 0
原创粉丝点击