当前位置:网站首页 > 技术博客 > 正文

java rt.jar



Java 运行时类型信息,简称RTTI;RTTI能够让我们在

RTTI可以分为两种:

  • 。这是在所有的类型就可用。
  • 。它能够帮助我们发现类型信息。
 

很显然,输出结果:

 

现在分析

首先,

 

上面说的RTTI强制类型转换只是一部分,因为我们上面只讨论到。

接下来的代码才是多态在起作用。。

2.1. 类加载器概述

要理解Java中的RTTI,我们必须要而我们这里要介绍的所以

在任何Java程序中,

为了让程序在内存中生成类的Class对象,我们有必要了解一下

有关Class文件的结构,可以查看另一篇文章:Java虚拟机实践(1)——逐个字节分析.class文件字节码二进制内容,这里不详细介绍,只要知道,我们的

类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个声明周期分为

 

之前说过,

程序运行时,字节码指令为时,如果类没有进行过初始化,则需要先触发其初始化。体现到源代码中就是:。值得注意的是,
使用java.lang.reflect包如果类没有进行过初始化,则需先触发其初始化。
当,则需要先触发其父类的初始化。
虚拟机启动时会被虚拟机先进行初始化。
实例解析的结果为的方法句柄时,并且此方法句柄对应的类没有进行过初始化,则需要先触发其初始化。

这五种情况我们称之为对类的一个。

Java程序在运行时,所以,我们能够知道:

那么类加载阶段,到底做了什么呢?

  1. 通过类的获取到此类的二进制字节流。
  2. 将字节流所代表的

2.2. Class对象

现在我们已经知道,类加载阶段会在内存中生成该类的Class对象。现在我们来简单探究一下Class对象。

在了解Class对象之前,我们有必要知道,我们可以使用下面的方法来手动硬编码加载类:

 

上面的代码应该在学Java JDBC时很常见的代码,我们通常称之为,那么现在我们学了之前的知识,我们知道,这是。

再看看下面的代码:

 

输出如下:

 

可以看到,。

而,而我们知道

那看看官方文档怎么说的吧,下面是Java的

 

意思是说:

那么我们再看看

 


而我们知道:

现在能够通过硬编码的方式来手动加载类,并且获取类的Class对象。实际上,

  • 其中obj为已经实例化的一个类的对象,通过调用其getClass方法,能够获取此类的Class对象。

既然能够获取到类的Class对象,那么我们说过,

 

代码很简单,输出:

 

Class对象的方法:

 

相比方式,Class字面量更加

 

下面表格左右是等效的

Class字面量包装类字段boolean.classBoolean.TYPEchar.classCharacter.TYPEbyte.classByte.TYPEshort.classShort.TYPEint.classInteger.TYPElong.classLong.TYPEfloat.classFloat.TYPEdouble.classDouble.TYPEvoid.classVoid.TYPE

注意,
下面是一个例子:

 

输出如下:

 

这里我们将static变量分为,对于非final的static变量,我们访问时就算一次主动引用。而对于

  • 上一篇: spring 跨域问题
  • 下一篇: linux查找pcie设备
  • 版权声明


    相关文章:

  • spring 跨域问题2025-01-27 21:00:59
  • securecrt 中文版2025-01-27 21:00:59
  • sql左外连接on的用法2025-01-27 21:00:59
  • SEO优化一般包括2025-01-27 21:00:59
  • vuejs动态加载国际化2025-01-27 21:00:59
  • linux查找pcie设备2025-01-27 21:00:59
  • gif动画录制工具2025-01-27 21:00:59
  • 测试流程规范2025-01-27 21:00:59
  • 余弦相似定理2025-01-27 21:00:59
  • flowable 原理2025-01-27 21:00:59