关闭

Scala 类的主构造方法中属性修饰符的作用与区别

标签: scalajavaclass
26人阅读 评论(0) 收藏 举报
分类:

众所周知,Scala 是运行于Java平台(Java虚拟机)的,那么Scala程序编译之后会生成对应的字节码文件,我们将字节码文件反编译成Java文件即可知Scala 为我们都做了什么.

  1. Scala 源代码

    
    class Test4(a: String)
    
    class Test5(val b: String, var c: String)
    
    class Test6(private val d: String, private var e: String)
    
    class Test7(private[this] val f: String, private[this] var g: String)
    
    class Test8(@BeanProperty val f: String, @BeanProperty var g: String)
    
    //貌似这种写法没有什么用
    class Test9(@BeanProperty private[this] val f: String, @BeanProperty private[this] var g: String)
  2. 反编译后的Java代码

    public class Test4
    {
      public Test4(String a)
      {
      }
    }
    
    public class Test5
    {
      private final String b;
      private String c;
    
      public String b(){return this.b; } 
      public String c() { return this.c; } 
      public void c_$eq(String x$1) { this.c = x$1; }
    
    
      public Test5(String b, String c)
      {
      }
    }
    
    public class Test6
    {
      private final String d;
      private String e;
    
      private String d(){return this.d; } 
      private String e() { return this.e; } 
      private void e_$eq(String x$1) { this.e = x$1; }
    
    
      public Test6(String d, String e)
      {
      }
    }
    
    public class Test7
    {
      public Test7(String f, String g)
      {
      }
    }
    
    public class Test8
    {
      private final String f;
      private String g;
    
      public String f(){return this.f; } 
      public String g() { return this.g; } 
      public void g_$eq(String x$1) { this.g = x$1; } 
      public String getF() { return f(); } 
      public String getG() { return g(); } 
      public void setG(String x$1) { g_$eq(x$1); }
    
    
      public Test8(@BeanProperty String f, @BeanProperty String g)
      {
      }
    }
    
    public class Test9
    {
      public Test9(@BeanProperty String f, @BeanProperty String g)
      {
      }
    }

    总结

主构造器参数 生成的字段 生成的方法
name:String 不生成任何字段 不生成任何方法
val/var name:String 私有字段 公共的getter/setter方法
private val/var name:String 私有字段 私有的getter/setter方法
private[this] val/var name:String 不生成任何字段 不生成任何方法
@BeanProperty val/var name:String 私有字段 公共的Scala版和JavaBean版的 getter/setter方法
@BeanProperty private[this] val/var name:String 不生成任何字段 不生成任何方法
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Java类、属性、方法分类及修饰符整合

原文地址 类的修饰符整合 一.类 类的修饰符: Public:可以在其他任何类中使用,默认为统一包下的任意类。 Abstract:抽象类,不能被实例化,可以包含抽象方法,抽象方法没有被实现,...
  • qq_34163820
  • qq_34163820
  • 2016-07-05 11:08
  • 628

Java 语言的类、属性、方法各有哪些修饰符?简述各修饰符的区别

1、 类的修饰符分为:可访问控制符和非访问控制符两种。 可访问控制符是:公共类修饰符 public 非访问控制符有:抽象类修饰符 abstract ;最终类修饰符 final    ...
  • wowfly98
  • wowfly98
  • 2016-08-12 17:35
  • 2449

Java中修饰符的作用域及可见性

java+ 作用域+
  • zhazhaniaohehe
  • zhazhaniaohehe
  • 2015-04-13 17:53
  • 3613

Scala学习回顾(六)---- Scala中的继承:超类的构造、重写字段、重写方法

注:本文学习源自:DT大数据梦工厂(微信公众号:DT_Spark) 类有一个主构器和任意数量的辅助构造器,而每个辅助构造器都必须以对先前定义的辅助构造器或主构造器的调用开始。子类的辅助构造器最终...
  • forever2qin
  • forever2qin
  • 2015-07-30 09:43
  • 803

Scala之主构造函数

主构造函数首先,我们必须要非常清晰明确的认识到:主构造函数不是你看到class后面跟的参数列表,那怎么可能是主构造函数呢?那只是主构造函数的函数列表!那主构造函数的函数体在那里呢?答案是:class ...
  • bluishglc
  • bluishglc
  • 2016-03-15 19:10
  • 12200

scala 类定义构造函数与继承

1.scala中如何定义类scala中定义类的方式很简单class Point(xc:Int,yc:Int)上面这行代码就定义了一个类 1.首先是关键字class 2.其后是类名 Point 3...
  • bitcarmanlee
  • bitcarmanlee
  • 2016-11-09 23:52
  • 3208

Java:构造函数的访问修饰符

构造方法可以处于public、protected、private和默认四种访问级别之一。 public public这里就不多说了 private 当构造方法为private级别时,意味着只能...
  • wangyanguiyiyang
  • wangyanguiyiyang
  • 2015-11-17 10:31
  • 2383

scala基础5 —— 类的继承

scala基础,类的继承
  • qq_35799003
  • qq_35799003
  • 2016-10-09 11:55
  • 336

abstract(抽象)修饰符,可以修饰类和方法

1.abstract修饰类:会使这个类成为一个抽象类。 Ø  abstract修饰符在修饰类时必须放在类名前。 Ø  将不能生成对象实例, Ø  可以作为对象变量声明的类型,也就是编译时类型, ...
  • Mandypan
  • Mandypan
  • 2016-08-05 18:54
  • 9478

static修饰符的作用及应用

/* static 修饰符 1.数据共享成员变量(实例变量)和静态变量(类变量)的区别 1.两个变量的生命周期不同 成员变量随对象的创建而存在,随对象被回收而释放 静态变量随类的加载而存在,...
  • u012768347
  • u012768347
  • 2016-03-27 14:12
  • 2114
    个人资料
    • 访问:24171次
    • 积分:1258
    • 等级:
    • 排名:千里之外
    • 原创:107篇
    • 转载:2篇
    • 译文:0篇
    • 评论:3条
    个人介绍
    文章分类
    最新评论