Java 匿名对象的Scala语法

Java 匿名对象的Scala语法,java,scala,oop,anonymous-class,Java,Scala,Oop,Anonymous Class,我试图找到与此java代码对应的Scala语法。假设A是一个类,A有一个方法sayHi newa().sayHi()将完全可以按照有效的java语法进行编译。另一方面,当我尝试新建A.sayHi()时,它不会在Scala中编译。Scala中对此有什么语法?在Scala中,可以使用以下语法之一: new A().sayHi() (new A).sayHi() 如果没有括号且前面有new,A.sayHi将被解释为一个类型,new A.sayHi()将是类类型A.sayHi的实例化。如果A.sayH

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


newa().sayHi()
将完全可以按照有效的java语法进行编译。另一方面,当我尝试
新建A.sayHi()
时,它不会在Scala中编译。Scala中对此有什么语法?

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

new A().sayHi()
(new A).sayHi()
如果没有括号且前面有
new
A.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