• scala class中孤立代码块揭秘


    在 scala class中,经常会有很多的代码块需要执行,它们不在任何方法中,只是孤立的代码块。

    案例:

    1 class Tester(val name:String, num:Integer) {
    2   private[this] val _name:String = name
    3   println(name)
    4   try {
    5     1 / num
    6   } catch {
    7     case e:Exception => e.printStackTrace()
    8   }
    9 }

    反编译class文件之后部分代码如下:

     1 private final String name;
     2    private final String _name;
     3 
     4    public String name() {
     5       return this.name;
     6    }
     7 
     8    public Tester(String name, Integer num) {
     9       this.name = name;
    10       this._name = name;
    11       .MODULE$.println(name);
    12 
    13       try {
    14          BoxesRunTime.boxToInteger(1 / .MODULE$.Integer2int(num));
    15       } catch (Exception var4) {
    16          var4.printStackTrace();
    17          BoxedUnit var10000 = BoxedUnit.UNIT;
    18       }
    19    }

    可以看出,成员变量初始化和try catch代码其实被放到了构造方法中了。注意,这个跟成员变量赋值的顺序是有关系的,成员变量一定要在使用前赋值,否则会有空指针异常等意外错误。
    在线反编译网址: http://javare.cn/

  • 相关阅读:
    Java 1 (JVM、JRE、JDK之间的关系)
    Java 0 (jdk下载安装及环境配置)
    推荐之链接
    idea 2019激活码
    Mock数据使用的Util
    mybatis慢查询配置
    logback参考配置
    Linux网络实时监控配置
    jmeter插件JMeterPlugins-Standard 压力测试
    ZoneDateTime 转换Date
  • 原文地址:https://www.cnblogs.com/johnny666888/p/11116080.html
Copyright © 2020-2023  润新知