在Scala中,Any和Object有什么区别?

del*_*ber 36 scala

假设我有以下java方法

protected void onEvent(Object obj) {

    }
Run Code Online (Sandbox Code Playgroud)

Scala编译器接受

protected override def onEvent(event: Any)
Run Code Online (Sandbox Code Playgroud)

protected override def onEvent(event: Object)
Run Code Online (Sandbox Code Playgroud)

这两者有什么区别吗?

4e6*_*4e6 25

一篇关于scala-lang 的文章有很好的图表(我甚至把它放在墙上).还需要提一下:

如果在Java运行时环境的上下文中使用Scala,则scala.AnyRef对应于java.lang.Object.

  • 正确.注意`AnyRef`不是'Any`,而是子类.`Any`也有子类`AnyVal`. (3认同)
  • 不,你没有错过任何东西; 我只是想澄清那些没有关注链接的人. (3认同)

Ern*_*ill 24

Any包括ObjectJava 中没有的东西; 它包括原始类型,也包括Nothing.Object与Java中的类相同,因此它绝对排除了原语.

  • 因此,如果您正在尝试使用Object的Java方法,那么如果您传入一个原语或是否隐式转换了Any会让您遇到麻烦吗? (8认同)