美文网首页
探索java隐式参数

探索java隐式参数

作者: 王小杰at2019 | 来源:发表于2019-01-25 18:40 被阅读98次

    jclasslib字节码查看器是一个可视化编译的Java类文件和包含的字节码的所有方面的工具。此外,它还包含一个库,使开发人员能够读写Java类文件和字节码。


    1. 安装jclasslib 插件,idea 安装参考下图,https://github.com/ingokegel/jclasslib/releases 下载对应的版本即可
    image.png
    1. 使用 jclasslib查看字节码信息


      image.png
    2. 查看本地方法变量表


      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);
    
        }
    }
    
    

    相关文章

      网友评论

          本文标题:探索java隐式参数

          本文链接:https://www.haomeiwen.com/subject/xmsvjqtx.html