ScalaのAny
がjava.lang.Object
にどのように関係しているのか混乱しています。私はScalaで、)AnyRef
はobject
に対応するが、(java.lang.Object
を取る)メソッドは、JavaクラスやScalaのクラスで定義されているかどうかの違いを作るように見えることを知っている:Scala:java.lang.Objectを受け取るメソッドにAnyを渡す
Javaクラス:
public class JavaClass {
public static void method(Object input) {
}
}
のScalaアプリケーション:
object ScalaObject extends App{
def method(input:java.lang.Object) = {}
val a:Any = null
method(a) // does not work
JavaClass.method(a) // does work
}
方法は、Javaクラスにあるのであれば、コンパイラは私がタイプAny
の変数を渡すことができます、なぜですか?