我有兩個scala類(以及他們的Java代碼,當我使用javap -private
來讀取類文件時)。需要幫助來解釋scala問題
當我在toString
方法中使用n
和d
時,它將在類中生成私有成員字段。這是爲什麼?我有點困惑。
Scala的#1:
class Rational(n: Int, d: Int) {
}
等效從javap的:
public class com.zjffdu.tutorial.scala.Rational
extends java.lang.Object
implements scala.ScalaObject{
public com.zjffdu.tutorial.scala.Rational(int, int);
}
Scala的#2:
class Rational(n: Int, d: Int) {
override def toString() = n + "/" + d
}
從javap的當量:
public class com.zjffdu.tutorial.scala.Rational
extends java.lang.Object
implements scala.ScalaObject{
private final int n;
private final int d;
public java.lang.String toString();
public com.zjffdu.tutorial.scala.Rational(int, int);
}
當val toString而不是'def toString'時會發生同樣的事情嗎? – soc 2011-06-04 14:07:30
如果它是'val toString',那麼你會看到'toString'字段。 – 2011-06-04 14:15:43
是的,當然,但那麼n和d的私人領域應該是正確的? – soc 2011-06-04 14:44:56