java - 匿名对象的 Scala 语法

标签 java scala oop anonymous-class

我正在尝试找到与此java代码相对应的Scala语法。假设A是一个类,a有一个方法sayHi。

new A().sayHi() 将按照有效的 java 语法完美编译。另一方面,当我尝试 new A.sayHi() 时,它无法在 Scala 中编译。 Scala 中有什么语法可以实现这一点?

最佳答案

在 Scala 中,可以使用以下之一:

new A().sayHi()
(new A).sayHi()

如果没有括号,并且前面有 newA.sayHi 将被解释为类型,然后 new A.sayHi() 将被解释为类型是类类型 A.sayHi 的实例。如果 A.sayHi 不是类类型,则会导致编译错误。

看一下:

scala> class A { def sayHi() = "hi" }; object A { type sayHi = String }
defined class A
defined object A

scala> new A().sayHi()
res0: String = hi

scala> new A.sayHi()  // same as `new String()`
res1: String = ""

scala> (new A).sayHi()
res2: String = hi

关于java - 匿名对象的 Scala 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44385734/

相关文章:

scala - 意外异常 : Compilation failed on new Play project

scala - 从 Scala REPL 执行 shell 命令

ruby-on-rails - 传递类或字符串化的类名?

c++ - 错误 : Invalid base class C++

scala - 如何在 Slick 2.0 中计算 COUNT(*)?

java - 如何使我的方法更加面向对象?

java - 在 netbeans 中使用 JTable

java - 为什么我不能在 Java 的 switch 语句中使用 'continue'?

java - 有没有办法在测试之间停止 micronaut 计划的工作?

java - 使用 ETag 但状态代码始终为 200 而不是 304