2012-08-14 2 views
5

スカラでは、パラメータのないメソッドを使うことができます。これは、DSLの目的に非常に役立ちます。クラスフィールドのゲッターの自動定義にも使用されます。Scalaで使用するために、パラメータレスのメソッドをJavaで宣言できますか?

可能な限りScalaとシームレスに統合したいJavaライブラリを開発しています。私は、Scalaがそれをパラメータなしとして認識するように、空のパラメータリストをJavaメソッドに注釈を付ける方法があるかどうか疑問に思っていました。例えば

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

Scalaで私が行うことができるように:

val f = new Foo 
f bar (0) 

を(バー文句を言うようにコンパイラを持たない)空の引数リストを持ちますか?

また、JavaからScalaスタイルのゲッターとセッターを定義する方法はありますか?

注:もちろん、私は、この特定の例では、私はこれはおそらく、私の質問に答える

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

bar(Object ... os)を試しましたか? – Luciano

+1

あなたの例で 'f bar()(0)'を呼び出すと、コンパイラはパラメータと配列インデックスを区別できます。 – aishwarya

+0

もちろん。 Scalaに 'bar()'が 'bar'として動作するべきであることを暗示する方法があるかどうか疑問に思っていました –

答えて

1

を定義することで問題を回避できることを知っている:

Scala getters and setters in Java class

答えは、あなたができることですあなたが特色を含むいくらかのトリッキーに頼らない限り、そうではありません。さて、私は@scala.reflect.BeanPropertyの注釈のいくつかの種類が有用な改善になると思います。

関連する問題