2012-08-14 66 views
5

在Scala中,我們可以使用無參數方法,這對DSL的用途非常有用;它們也用於爲類字段自動定義getter。您可以在Java中聲明用於Scala的無參數方法嗎?

我正在開發一個Java庫,我希望儘可能無縫地與Scala集成。我想知道是否有方法用一個空的參數列表來註釋Java方法,以便Scala將其識別爲無參數。

例如

class Foo { 
    @ParameterLess 
    public String[] bar() { return someArray; } 
} 

讓Scala中我可以這樣做:

val f = new Foo 
f bar (0) 

無需編譯器抱怨巴()有一個空的參數列表?

另外,有沒有辦法從Java定義Scala風格的getter和setter?

注:當然,我知道,在這個特殊的例子,我可以通過定義

public String bar(int i) { return someArray[i]; } 
+0

你嘗試過吧(Object ... os)嗎? – Luciano 2012-08-14 12:59:49

+1

您需要在您的示例中調用'f bar()(0)',以便編譯器可以區分參數和數組索引。 – aishwarya 2012-08-14 15:16:52

+0

當然。我想知道是否有一種方法向Scala暗示'bar()應該作爲'bar' – 2012-08-15 07:06:42

回答

1

解決該問題,這可能回答我的問題:

Scala getters and setters in Java class

答案是,你可以除非你訴諸一些涉及特質的欺騙手段。好吧,我猜想某種註釋類似於la @scala.reflect.BeanProperty會是一個有用的改進。

相關問題