构造函数中的Scala最终变量 [英] Scala final variables in constructor

查看:125
本文介绍了构造函数中的Scala最终变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我还是新到Scala,但我知道你可以定义类变量在构造函数中初始化

I'm still pretty new to Scala, but I know you can define class variables that are initialized in the constructor like

class AClass(aVal: String)



which would be like doing the following in java

class AClass {
    private String aVal;

    public AClass(String aVal) {
        this.aVal = aVal;
    }
}



在Java中,我将声明aVal为final。是否有一种方法使Scala语法中的aVal变量final?

In Java, I would declare aVal as final. Is there a way to make the aVal variable final in the Scala syntax?

编辑:这是我看到当我编译以下Scala类:

Here is what I am seeing when I compile the following Scala class:

class AClass(aVal: String) {
  def printVal() {
    println(aVal)
  }
}

我运行 javap -private 并获得输出

public class AClass extends java.lang.Object implements scala.ScalaObject{
  private final java.lang.String aVal;
  public void printVal();
  public AClass(java.lang.String);
}



当我将scala类定义更改为 class AClass(** val ** aVal:String)我从 javap -private中获得以下输出

public class AClass extends java.lang.Object implements scala.ScalaObject{
  private final java.lang.String aVal;
  public java.lang.String aVal();
  public void printVal();
  public AClass(java.lang.String);
}

公共方法 aVal

注意我使用的是scala 2.9

Note I am using scala 2.9

推荐答案

class AClass(aVal: String)


b $ b

在此代码中,aVal是最终变量。所以你已经有了一个最终变量。

In this code, aVal is a final variable. So You already have a final variable.

class AClass(val aVal: String)

在这段代码中,aVal是final和getVAl。

In this code, aVal is final and you have getter of aVAl. So you can use it like below

scala> val a= new AClass("aa")
a: A1 = A1@1d7d58f

scala> a.aVal
res2: String = aa

最后,

class AClass(var aVal: String)

在这段代码中,aVal不是final,你有aVal的getter和setter。

In this code, aVal is not final and you have getter and setter of aVal. So you can use it like below

scala> val a= new AClass("aa")
a: AClass = AClass@1c059f6

scala> a.aVal
res3: String = aa

scala> a.aVal = "bb"
a.aVal: String = bb

scala> a.aVal
res4: String = bb

这篇关于构造函数中的Scala最终变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆