Какова цель этих файлов Java в scala.runtime?
В исходном дереве Scala есть несколько файлов *.java в каталоге scala.runtime.
Эти файлы кажутся очень простыми, e. г. DoubleRef.java
выглядит следующим образом:
package scala.runtime;
public class DoubleRef implements java.io.Serializable {
private static final long serialVersionUID = 8304402127373655534L;
public double elem;
public DoubleRef(double elem) { this.elem = elem; }
public String toString() { return java.lang.Double.toString(elem); }
}
Есть ли причина, по которой эти классы не могут быть определены в Scala?
Ответы
Ответ 1
Просто догадаться: конструктор Scala, который компилируется в общедоступное поле - public var
в Scala компилируется в частное поле и в общедоступный аксессор и мутатор. Как я понимаю, эти классы *Ref
широко используются, это может быть оптимизация, чтобы избежать частых вызовов методов и заменять их прямым доступом к полям.