Scala 最近让我很头疼,因为我在 Internet 上找不到信息。很难找到信息,因为 Scala 用一组无限的术语定义了他自己的语言(我还不知道)。
我在 StackOverflow 上提出了一些关于 Scala 和 Java 之间转换的问题,在最后一个问题中我说我将放弃这种方法。但是,我想了解正在发生的事情。
想象一个 Scala 类:
abstract class Block(n: String) {
require(n != null)
val name = n
var log: ArrayList[String]
var inputs: ArrayList[Input[_]]
var outputs: ArrayList[Output[_]]
def newValue
}
到目前为止,一切都很好。问题是:
我无法访问类字段(是的,我试过了this.inputs()
)。可能是因为它是这样翻译的:
public abstract class pt.thesis.tiago.Block
extends java.lang.Object implements scala.ScalaObject{
public java.lang.String name();
public abstract java.util.ArrayList log();
public abstract void log_$eq(java.util.ArrayList);
public abstract java.util.ArrayList inputs();
public abstract void inputs_$eq(java.util.ArrayList);
public abstract java.util.ArrayList outputs();
public abstract void outputs_$eq(java.util.ArrayList);
public abstract void newValue();
public pt.thesis.tiago.Block(java.lang.String);
}
为什么每一件事都是抽象的?我不能像 Java 一样,只有我想要的东西是抽象的吗?