2011-08-23 17 views
32

は、私は、次のJavaメソッドがScalaでは、AnyとObjectの違いは何ですか?

protected void onEvent(Object obj) { 

    } 

Scalaのコンパイラは

protected override def onEvent(event: Any) 

protected override def onEvent(event: Object) 

2の間に違いはあり受け入れていると仮定しますか?

答えて

23

スケーラランにはarticleがあります(私は壁に置いても構いません)。

If Scala is used in the context of a Java runtime environment, then scala.AnyRef corresponds to java.lang.Object.

+3

' AnyRef'は ' –

+0

@variable.nnteger = 10'(デフォルトでは 'val i:Int = 10'ではデフォルトではありません) – 4e6

+3

いいえ、あなたは何も見逃していませんでした。リンクをたどらなかった人々を明確にしたかっただけです。 –

21

Anyには、JavaではObjectが含まれていません。プリミティブ型とNothingも含まれています。 ObjectはJavaと同じクラスなので、基本的にはプリミティブを除外します。

+6

Objectを使用するJavaメソッドを試している場合、Anyはプリミティブを渡すか、暗黙的に変換されると問題になるのですか? –

+0

@JamesMcMahon私は同じと思う。 – 2rs2ts

+0

@James私は 'def met(a:java.lang.Object)= {};を試しました。 val i = 10; *エラー:暗黙の変換の結果の型は、AnyRef *より具体的でなければなりません* http://stackoverflow.com/a/26550576/4541480、それは 'val i: 'Any''はサブクラス' AnyVal'も持っています。 – Nicofisi

関連する問題