最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Java如何理解class文件中方法的descriptor
时间:2026-06-01 09:15:01 编辑:袖梨 来源:一聚教程网
理解class文件的方法描述符对开发者至关重要,本文将通过实例解析其转换规则。
背景
在Java开发过程中,掌握class文件结构能显著提升工作效率。本文重点探讨class文件中方法描述符的解析方法,通过具体示例展示类型信息在字节码中的表现形式。
下表展示了java.lang.Object类中部分方法及其对应的描述符:
| 方法名称 | 参数类型 | 返回值类型 | 描述符 |
|---|---|---|---|
| hashCode() | 无参数 | int | ()I |
| equals(Object) | Object | boolean | (Ljava/lang/Object;)Z |
| wait(long, int) | long, int | void | (JI)V |
下表展示了java.util.stream.Stream接口中部分泛型方法及其描述符:
| 方法名称 | 参数类型 | 返回值类型 | 描述符 |
|---|---|---|---|
| of(T) | 泛型T | Stream |
(Ljava/lang/Object;)Ljava/util/stream/Stream; |
| of(T...) | 可变参数T | Stream |
([Ljava/lang/Object;)Ljava/util/stream/Stream; |
要点
- 方法描述符记录方法签名信息,但不包含泛型的具体类型参数
- 方法描述符基于字段描述符规则构建
- 字段描述符分为三种情况
- 8种基本类型
- 非数组引用类型
- 数组类型
- 字段描述符分为三种情况
示例值
| 参数类型 | 返回值类型 | 描述符 |
|---|---|---|
| 无 | void | ()V |
| int | void | (I)V |
| int, int | int | (II)I |
| Object | String | (Ljava/lang/Object;)Ljava/lang/String; |
| int[] | void | ([I)V |
| int[] | int[] | ([I)[I |
| String[] | String[] | ([Ljava/lang/String;)[Ljava/lang/String; |
| int[][][] | void | ([[[I)V |
| String[][][] | void | ([[[Ljava/lang/String;)V |
正文
理论知识
方法描述符基于字段描述符规则构建,具体语法规则如下:
- 以(字符开头
- 接0个或多个参数描述符
- 以)字符结尾
- 最后跟返回值描述符


实战演示
通过以下抽象类示例演示方法描述符的生成规则:
public abstract class Main {
abstract void method1();
abstract void method2(int a);
abstract int method3(int a, int b);
abstract String method4(Object o);
abstract void method5(int[] array);
abstract int[] method6(int[] array);
abstract String[] method7(String[] strings);
}
编译与查看
使用javac编译后,通过javap命令查看生成的描述符:
javac Main.java
javap -v -p Main
结果整理如下:
| 方法名 | 参数类型 | 返回值类型 | 描述符 |
|---|---|---|---|
| method1 | 无 | void | ()V |
| method2 | int | void | (I)V |
| method3 | int,int | int | (II)I |
| method4 | Object | String | (Ljava/lang/Object;)Ljava/lang/String; |
| method5 | int[] | void | ([I)V |
| method6 | int[] | int[] | ([I)[I |
| method7 | String[] | String[] | ([Ljava/lang/String;)[Ljava/lang/String; |
参考资料
- The Java Virtual Machine Specification中相关章节
- 关于class文件字段描述符的解析文章
本文详细解析了class文件中方法描述符的生成规则,通过理论结合实践的方式帮助开发者深入理解字节码结构。
相关文章
- 实测Gemini Omni Demo:从注册到生成视频踩过的坑 06-01
- web3.0和元宇宙的区别详细介绍 06-01
- 比亚迪自研4nm AI芯片对标英伟达 算力碾压特斯拉 06-01
- 帝国权杖与文明攻城指南:帝国权杖与文明攻城技巧解析 06-01
- miui13稳定版的发布日期介绍 06-01
- 抖音网页版入口登录链接地址 06-01