Java在运行时识别对象和类信息有两种方式:一种是RTTI;另一种是反射机制。什么是RTTI?RTTI:(run-time type
identification)运行时类型识别,当只有一个指向对象基类的引用时RTTI机制可以让你找到这个对象的确切概念。要理解RTTI的工作原理,必须先了解类信息是如何表示的,这个是由Class对象完成的,它完成了相关类的信息,Java使用Class对象来执行RTTI,即使你正在执行类似转型的这样操作,Class也有其他方式来执行该操作。每当编译一个Class类就有个Class对象,也就是说有个Class对象保存在.class文件当中,这个类对象是由JVM类加载器,所有的类都是在第一次使用时加载到内存当中,若程序创建一个静态的对象的引用时就会加载该类,类加载器并不是加载所有的字节码,是动态加载的。也就是为什么通过反射可以或许相关类的信息。
public class SwettShop {
public static void main(String args[]){
System.out.println("inside main.....");
new Cady();
System.out.println("after create Cady ....");
try {
Class.forName("com.dt.java.study.chart5.Gum");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
System.out.println("after create Gum ....");
new Cookie();
System.out.println("after create Cookie ....");
}
}
class Cady{
{
System.out.println("init Cady code ....");
}
static {
System.out.println("Loading Cady ......");
}
}
class Gum{
{
System.out.println("init Gum code ....");
}
static {
System.out.println("Loading Gum ......");
}
}
class Cookie{
static {
System.out.println("Loading Cookie ......");
}
}
分享到:
相关推荐
在面向对象的编程语言中,例如 C++、Java、Delphi 等,RTTI 都提供了对类型识别的支持。在 C++ 中,RTTI 并不是什么新的东西,它早在十多年以前就已经出现了。但是,大多数开发人员,包括许多高层次的 C++ 程序员,...
RTTI的核心在于Java的`Class`类,它提供了获取对象运行时类型信息的能力。每种Java类在运行时都有一个与之关联的`Class`对象,这个对象包含了类的所有元数据,如类名、包名、接口、方法等。通过`Class`对象,我们...
Java的RTTI(Runtime Type Information,运行时类型信息)机制是Java语言的一个重要特性,它允许程序在运行时检查对象的实际类型。RTTI使得在编译时未知类型的对象能够在运行时进行适当的处理,从而增强了代码的灵活...
在Java中,RTTI允许我们在程序运行时检查和操作对象的实际类型,这是通过使用`instanceof`关键字和`getClass()`方法实现的。在泛型类中,虽然类型参数在编译时被擦除,但仍然可以通过一些方式获取类型信息。 泛型类...
Java的RTTI(运行时类型识别)和反射机制是两种强大的工具,它们允许程序在运行时检查和操作类的信息及对象。RTTI是Java的一种特性,它使得在编译后的程序中仍然可以在运行时获取对象的实际类型信息。这在处理多态性...
2. RTTI与多态性的关系:在多态性使用场景中,RTTI可以用来在运行时确认对象的具体类型,以便执行特定类型的操作。 知识点五:类型转换的风险 1. 向下转型的安全性:在使用RTTI进行向下转型(基类引用转为派生类...
- **运行时类型信息**:C++提供RTTI机制来支持运行时类型识别,Java则通过方法表和JVM的动态绑定机制来实现。 - **性能考量**:C++中的虚函数调用可能会导致额外的间接寻址开销,而Java中的方法调用由JVM优化处理,...
Java语言通过RTTI可以在运行时知道一个对象的类型信息。RTTI在Java中主要通过两种形式存在:一种是传统的类型转换,也就是instanceof关键字和类的cast方法;另一种是反射机制。RTTI的实现依赖于Java类模型中的Class...
Java中的元数据Class类是一个基础的概念,它代理了这个类的类型信息、方法签名、属性等信息。每个类都有一个Class对象,它用来创建这个类的所有对象。每个对象的创建都依赖于Class对象的创建,而Class只有一个私有的...
**传统RTTI与反射**: Java提供了两种获取运行时类型信息的方式。除了上述的“传统”RTTI,还有Java 1.1引入的**反射(Reflection)**机制。反射允许程序在运行时动态地访问和操作类、接口、字段和方法的信息,即使...
如虚函数(virtual function)、运算符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)、异常处理(exception handling)、运行时类型信息(RTTI)和命名空间(namespace)等。...
Java 中的运行时类型识别(RTTI)机制是指在程序执行过程中,Java 虚拟机(JVM)可以识别出对象的真正类型信息,而不仅仅是引用类型。这项机制是通过 Class 类实现的。 Class 类是 Java 中的核心类之一,包含了关于...
### Java反射机制与动态代理 #### 一、Java反射机制 **Java反射机制**是一种强大的功能,它允许我们在运行时动态地访问类的信息并进行操作。这种能力在很多情况下非常有用,比如在开发框架和库时,我们经常需要在...
#### 二、RTTI与Class对象 RTTI主要用于运行时确定向上转型后的对象的实际类型。在JAVA中,每个类都对应着一个`Class`对象,该对象封装了类的所有信息,包括类名、字段、方法、构造方法等。`Class`对象的创建是在类...
在Java中,**运行时类型信息**(RTTI)是指程序能够在运行时获取并使用对象和类的类型信息。这使得开发者可以在运行时动态地创建对象、调用方法或访问字段。RTTI主要通过两种方式实现: 1. **传统RTTI**:假设在...
Java的动态类型系统和RTTI(Run-Time Type Information)、Reflection机制,提供了对运行时类型的深入洞察,增强了程序的灵活性和动态性。此外,Java的**标准程序库**(Java Libraries)是其另一大亮点,涵盖了广泛...
7.8.2 下溯造型与运行期类型标识 7.9 总结 7.10 练习 第8章 对象的容纳 8.1 数组 8.1.1 数组和第一类对象 8.1.2 数组的返回 8.2 集合 8.2.1 缺点:类型未知 8.3 枚举器(反复器) 8.4 集合的类型 8.4.1 Vector ...
在高级篇中,Java程序设计进一步深入到异常处理、RTTI与反射机制、回调机制、泛型编程、容器使用、I/O系统、并发编程以及网络和图形界面编程等方面。异常处理是Java程序中处理错误和异常情况的机制。RTTI(Runtime ...
运行时类型信息(RTTI)是Java反射机制的基础之一,它允许开发者在程序运行过程中查询和使用对象的类型信息。这对于确定对象的实际类型特别有用,特别是在多态上下文中,当对象的引用可能指向不同的子类实例时。 ##...