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;
}
}
In Java, I would declare aVal as final. Is there a way to make the aVal variable final in the Scala syntax?
EDIT: Here is what I am seeing when I compile the following Scala class:
class AClass(aVal: String) {
def printVal() {
println(aVal)
}
}
I ran javap -private
and got the output
public class AClass extends java.lang.Object implements scala.ScalaObject{
private final java.lang.String aVal;
public void printVal();
public AClass(java.lang.String);
}
When I change the scala class definition to have class AClass(**val** aVal: String)
I get the following output from 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);
}
The public method aVal
is generated. I'm still learning here - can anyone explain why that is generated?
Note I am using scala 2.9