2017-06-06 51 views
2

我試圖找到對應於此Java代碼的Scala語法。假設A是一個類a有一個方法sayHi。匿名對象的Scala語法

new A().sayHi()將根據有效的java語法完美編譯。另一方面,當我嘗試new A.sayHi()它不在Scala中編譯。我們在Scala中有什麼語法呢?

回答

4

在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