Javaインタフェースとは異なり、Scalaの特性には実装が含まれることがあります。 IntelliJのScalaのプラグインは、Javaコードに実装クラスを公開していません
~/code/scratch/20120505 cat trait.scala
package test
trait T {
def a = println("foo")
}
~/code/scratch/20120505 scalac210 -d . trait.scala
~/code/scratch/20120505 javap -classpath . test/T
Compiled from "trait.scala"
public interface test.T extends scala.ScalaObject{
public abstract void a();
}
~/code/scratch/20120505 javap -classpath . test/T\$class
Compiled from "trait.scala"
public abstract class test.T$class extends java.lang.Object{
public static void a(test.T);
public static void $init$(test.T);
}
:scalac
は、インタフェースと実装クラスにこれをコンパイルします。 Scalaコンパイラの実装の詳細に頼っているので、これを直接使うのは良い考えではありません。
形質のサブクラスで対応するメソッドを呼び出す必要があります。あなたはScalaでそれを書かなければならないでしょう。
詳細情報:How are Scala traits compiled into Java bytecode?
私は11.0 intellij-ideaを使用します。 – Vladimir
その場合、バグが疑われる場合は11.1.1を試してみます。 –
11.1.1と同じですが、すべての$ containigクラスは無視されます。 – Vladimir