給定以下的Scala對象:我可以訪問一個沒有Java括號的Scala對象的val嗎?
object ScalaObject {
val NAME = "Name"
}
似乎Scala編譯器生成一個無參數的方法來訪問NAME
字段。然而,當我試圖從Java訪問這個領域,它看起來像進入這個領域唯一的辦法就是像一個無參數方法:
System.out.println(ScalaObject$.MODULE$.NAME());
有沒有哄Scala編譯器,以允許Java訪問的方式val
每個預期的Java成語如下:
System.out.println(ScalaObject$.MODULE$.NAME);
小寫vals是否也發生同樣的情況? – ziggystar
順便說一句,這不是預期的* Java *成語,它是預期的* Scala *成語。就字節碼而言,Scala(幾乎?)總是將字段暴露爲具有相同名稱的getter方法。 –
@AndrzejDoyle,我不確定你在說什麼。在Java中,預計會訪問不帶括號的靜態最終字段,因爲它是唯一的方法。你似乎暗示的是,在Scala中,預期的技術是使用getter方法。無論如何,無論是Scala的首選技術,似乎都與恰好在Scala中實現的API的Java客戶端不相關。 –