最近、インターネットで情報が見つからないため、Scalaから多くの問題が発生しています。Scalaは(私はまだ知らない)彼自身の言語を一連の無限の用語で定義しているので、情報を得るのは難しいです。
私はScalaとJavaの間のこの変換に関してStackOverflowについていくつか質問をしました。最後の質問で、私はこのアプローチをあきらめるつもりだと言いました。しかし、私は何が起こっているのかを理解したいと思います。
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が好きではなく、欲しいものだけが抽象的です。