jclasslib字节码查看器是一个可视化编译的Java类文件和包含的字节码的所有方面的工具。此外,它还包含一个库,使开发人员能够读写Java类文件和字节码。
- 安装jclasslib 插件,idea 安装参考下图,https://github.com/ingokegel/jclasslib/releases 下载对应的版本即可
-
使用 jclasslib查看字节码信息
image.png -
查看本地方法变量表
image.png
通过jclasslib看到方法method1 在我们编写的时候只有一个变量a,在本地变量中增加了一个this,
那么我们手动在方法中增加该参数看是否能够正确执行
image.png
我们可以看到编译通过并能够正确执行, 这个现象说明Java在第一个参数this可以省略,如果省略在jdk编译的时候会自动加上,手动指定也不会报错,但是第一个参数名字必须是this
因为这里调用的是一个虚方法,按照Java语言的规则,方法第一个参数是隐式的,代表该方法的接收者,也即是this指向的对象,这个参数以前是放在参数列表中进行传递的
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class Example1 {
private int age = 10;
/**
* jdk 会把当前调用的的实例,作为第一个参数传入进去,参数名叫this
* 这个叫隐式参数
*/
public void method1(Example1 this, int a) {
log.info("a:{}", a);
log.info("age:{}", this.age);
}
public static void main(String[] args) {
Example1 example1 = new Example1();
example1.method1(1);
}
}
网友评论