什么';scala.runtime中这些Java文件的用途是什么?
目录中Scala的源代码树中有几个*.java文件 这些文件似乎很简单,例如。g什么';scala.runtime中这些Java文件的用途是什么?,java,scala,programming-languages,reference,runtime,Java,Scala,Programming Languages,Reference,Runtime,目录中Scala的源代码树中有几个*.java文件 这些文件似乎很简单,例如。gDoubleRef.java如下所示: package scala.runtime; public class DoubleRef implements java.io.Serializable { private static final long serialVersionUID = 8304402127373655534L; public double elem; public Do
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中定义这些类吗?也只是一个猜测:Scala中没有编译到公共字段的Scala构造—公共
var
s在Scala中编译到私有字段和公共访问器和变异器。正如我想象的那样,这些*Ref
类被广泛使用,这可能是一种优化,以避免频繁的方法调用,并用直接字段访问取代它们。只是一个猜测。没有Scala构造会编译为私有静态字段,这可能是java.io.Serializable正确工作所必需的?@Brian:您可以使用@SerialVersionUID
注释。这听起来很有道理,但是声明那些方法final
会不会通过让Java优化它们而获得同样的效果呢?我不知道-也许这个想法是不需要任何人(编译器或JVM)在这里进行任何优化。。。