试想,类对象是什么?所有的类对象调用类方法时,使用的是同一个地址的
函数,也就是说,类对象共享类的方法,在堆中分配的空间其实是对象的属
性而已,当然还有一些其它的信息(隐含的指针)。当你的对象要调用一个
方法时,为何会去执行那个类的方法所在的内存地址,并把对象的属性(也
或许是一些外部参数)传入那个方法。显然的,存在着一个隐含的指针,指
向类的内存地址,这样才有可能让对象知道要调用哪个类的方法。这样,就可以想明白了,RTTI的实现应该也是这个道理。

解决方案 »

  1.   

    不知道我的想法是否正确:比如定义了一个类A;
    现在运行时候,在堆中创建了一个对象,(正如上所说,实际在堆中分配对象属性)
    设有一个指针或者引用P指向该对象在堆中的位置,那么运行时是怎样判断引用P指向的对象是否是类A的一个实例?也就是哪儿去找P指向的在堆中分配的对象所对应的类的信息?
      

  2.   

    如果想看instanceof方法的具体实现,可以打开Java的源文件观看在Java_Home下的src.zip压缩文件中,解压观看。
      

  3.   

    instanceof 应该是一条java的bytecode 指令,
    这个也能在源程序中看到怎样实现的吗?