class sample (a: Int, b: Int)
この場合、aとbはプライベートです。javapで逆アセンブルすると、aとbがクラスの一部ではないことがわかります(Scalaはこれらのクラスフィールドを呼び出します):
public class Sample extends java.lang.Object implements scala.ScalaObject{
public Sample(int, int);
}
aとbの前にvalが付きます。javapで逆アセンブルすると、aとbがSampleのパブリックフィールドになります。
class sample (val a: Int, val b: Int)
public class Sample extends java.lang.Object implements scala.ScalaObject{
public int a();
public int b();
public Sample(int, int);
}
def
コンストラクターの代わりにを使用val
すると、コンパイルされません。def
関数を定義するためのものです。def
コンストラクターでパラメーターとして使用できるかどうかわからない。
また、プライベートおよび保護されたものは期待どおりに動作することに注意してください。これを考えると:
class Sample(private val a: Int, protected val b: Int, val c: Int)
javapを使用して次のように分解します。
public class Sample extends java.lang.Object implements scala.ScalaObject{
public int b();
public int c();
public Sample(int, int, int);
}