`
guanjh
  • 浏览: 233482 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Java运行时类型识别RTTI

    博客分类:
  • Java
阅读更多
运行时类型识别(run-time type identification ,RTTI)的概念上看非常简单:当只有一个指向对象基类的引用时RTTI机制可以让你找到这个对象的确切概念。

1。Class对象是RTTI的核心,Class的类的类,每个类都有一个class对象。每当编写并且编译一个新类,就会产生一个Class对象(被保存在同名的.class文件当中)

2。Class.forName("classname"),如果对象没有加载就加载对象(这将会触发类的静态初始化)
      Class.newInstance()用来产生一个对象。如
      Class m = Class.forName("classname");//1
      Object o = m.newInstance();//2
      java也提供"类字面常量"的机制生成对象的引用。像这样:
      A.class
     对于基本类型,boolean.class === Boolean.TYPE , char.class ===Character.TYP
     void.class ===Void.TYPE,等等。。。。
     那么也可以用Class m = char.class;  //或者 Class m = <aclass><aclass>.class
                             Object  o = m.newInstance();
                             ((Char)o).××

3。instanceof 关键字用于检查对象是不是某个特定类型的实例。这用于类型转换前做检测。如:
      if  ( x   instanceof Dog )
              ((Dog)x).bark();
      </aclass>除了 instanceof 关键字以外,还可以使用 Class.isInstance() 方法,两者功能相同。
<aclass>
4。instanceof的替代方案是: x.getClass == Y.class 或者x.getClass.equals( Y.class)

5。Class对象的getInterfaces()获得接口,getSurperClass 或者获得超类。

6。反射是运行时的类信息。java附带的库java.lang.reflect含有Field,Method,Constructor类(每个类都实现了Memeber接口)。这些类型的对象是有JVM在运行时创建的,用以表示未知类里对象的成员,然后用Constructor创建新的对象,用get ()和set()方法读取和修改Field对象关联的字段,用invoke()方法调用于Method对象关联的方   法,还可以用getFields(),getMethods(),getConstructors()等等方法。</aclass>
分享到:
评论
3 楼 wokaonagekao 2012-02-16  
Google把你的放在第一个
2 楼 wokaonagekao 2012-02-16  
4。instanceof的替代方案是: x.getClass == Y.class 或者x.getClass.equals( Y.class)
如果x 和y 有继承关系的话, x instanceof y 成立
x.getClass==y.claa 编译不通过。。。。
(Class<? extends Base>)new Derived().getClass() == Base.class 输出false
1 楼 353790060 2009-02-21  
受益了~~~

相关推荐

    Java进阶教程之运行时类型识别RTTI机制

    在Java编程中,运行时类型识别(Runtime Type Identification,简称RTTI)是一种关键特性,它允许程序在运行时检查对象的实际类型。RTTI是Java多态性的重要基础,使得代码能够根据对象的实际类型执行不同的操作。...

    强类型系统 RTTI 类型识别

    强类型系统 RTTI(Run-Time Type Identification)是一种类型识别系统,主要用于在运行时期检查对象的实际派生类型。RTTI 提供了两个非常有用的操作符:typeid 操作符和 dynamic_cast 操作符。typeid 操作符返回指针...

    java 泛型类的类型识别示例

    在Java中,RTTI允许我们在程序运行时检查和操作对象的实际类型,这是通过使用`instanceof`关键字和`getClass()`方法实现的。在泛型类中,虽然类型参数在编译时被擦除,但仍然可以通过一些方式获取类型信息。 泛型类...

    举例讲解Java的RTTI运行时类型识别机制

    Java的RTTI(Runtime Type Information,运行时类型信息)机制是Java语言的一个重要特性,它允许程序在运行时检查对象的实际类型。RTTI使得在编译时未知类型的对象能够在运行时进行适当的处理,从而增强了代码的灵活...

    Java在运行时识别类型信息的方法详解

    Java 中的运行时类型识别(RTTI)机制是指在程序执行过程中,Java 虚拟机(JVM)可以识别出对象的真正类型信息,而不仅仅是引用类型。这项机制是通过 Class 类实现的。 Class 类是 Java 中的核心类之一,包含了关于...

    Thinking_in_java(chapter10).pdf

    从给定文件的【部分内容】中我们可以了解到,该文档主要讲述了Java中运行时类型识别(RTTI)的原理和用途,以及Java中的反射机制。在此基础上,我们进一步探讨Java中RTTI和反射的相关知识点。 知识点一:运行时类型...

    第11章 运行期类型鉴定.pdf

    Java提供了两种获取运行时类型信息的方式。除了上述的“传统”RTTI,还有Java 1.1引入的**反射(Reflection)**机制。反射允许程序在运行时动态地访问和操作类、接口、字段和方法的信息,即使在编译时这些信息未知。...

    Java的RTTI和反射机制代码分析

    Java的RTTI(运行时类型识别)和反射机制是两种强大的工具,它们允许程序在运行时检查和操作类的信息及对象。RTTI是Java的一种特性,它使得在编译后的程序中仍然可以在运行时获取对象的实际类型信息。这在处理多态性...

    深入理解Java的反射机制Java系列2021.pdf

    RTTI是Run-time Type Identification的缩写,即运行时类型识别。Java语言通过RTTI可以在运行时知道一个对象的类型信息。RTTI在Java中主要通过两种形式存在:一种是传统的类型转换,也就是instanceof关键字和类的...

    C++和Java多态的区别

    - **运行时类型信息**:C++提供RTTI机制来支持运行时类型识别,Java则通过方法表和JVM的动态绑定机制来实现。 - **性能考量**:C++中的虚函数调用可能会导致额外的间接寻址开销,而Java中的方法调用由JVM优化处理,...

    java 多态 经典讲解

    运行时类型识别(RTTI)通过`instanceof`关键字和`getClass()`方法提供了一种检查对象实际类型的方式,从而安全地执行向下类型转换。 #### 八、多态的陷阱:置换私有方法 在多态的场景下,私有方法不参与多态机制,...

    Java编程思想学习笔记

    了解不同类型的JVM有助于我们理解Java运行环境的多样性和适用性。 JVM的原理涉及其作为虚拟处理器的角色,它位于Java编译器和操作系统平台之间,负责执行Java字节码程序。JVM通过软件方法模拟计算机的硬件平台,...

    JAVA反射机制

    RTTI(RunTime Type Information)是Java在运行时获取类型信息的机制,其使用一种类型对象(Type Object)来实现,这种对象在程序运行时可用于识别类和接口类型。Java使用Class对象来执行RTTI。每个类都有一个Class...

    C++与Java的不同.

    此外,C++还支持运行时类型识别(RTTI),如`dynamic_cast` 和 `typeid`,用于在运行时确定对象的实际类型。 - **Java**: 多态性通过继承和接口实现。子类可以重写父类的方法,接口定义了一组方法签名,具体实现留给...

    JAVA程序员面试问题

    Java通过静态类型检查和运行时类型信息(RTTI)来保证类型安全,而C++更多依赖于程序员的谨慎和经验。 #### 25. 集成开发环境(IDE)的重要性 集成开发环境(IDE)对于Java程序员而言至关重要。IDE集成了代码编辑、...

    Java编程思想(第四版)1

    第十一章“运行期类型识别”讲解了运行期类型信息(RTTI)和反射,这是动态获取类信息和操作的关键技术。 第十二章“传递和返回对象”讨论了对象的传递方式,包括引用传递、克隆、只读类的设计等,这些都是处理对象...

    Practicla Java.pdf(简体中文版)

    - 动态类型系统:支持运行时类型识别(RTTI)和反射(Reflection)机制。 - 标准库:提供广泛且强大的功能集合。 #### 三、Java编程中的关键概念 - **对象创建与初始化**:讲解如何创建Java对象以及对象初始化的过程...

    深入理解Java类型信息(Class对象)与反射机制

    本篇主要是深入对Java中的Class对象进行分析,这对后续深入理解反射技术非常重要,主要内容如下:认识Class对象之前,先来了解一个概念,RTTI(Run-TimeTypeIdentification)运行时类型识别,对于这个词一直是C++中...

Global site tag (gtag.js) - Google Analytics