9
Scalaで次のJavaインターフェイスを実装する方法はありますか?ScalaのオーバーロードされたvargsメソッドによるJavaインターフェイスのオーバーライド
public interface Request {
void acceptLanguage(Locale... locales);
void acceptLanguage(String... locales);
}
私が試した:
override def acceptLanguage(locales: Locale*) : Unit =
override def acceptLanguage(locales: String*) : Unit =
をしかし、それは私を与える:
error: double definition:
have same type after erasure
そして、私はこの試みた:
override def acceptLanguage(locales: Locale*) (implicit Manifest[Locale]) : Unit = {}
override def acceptLanguage(locales: String*) (implicit Manifest[String]): Unit = {}
をしかし、オーバーライドが失敗したので、それは別の署名を付与
バージョン2.9.2を使用しています。
私は、これは正しい軌道に乗っていると思います。私が見つけたことによると、 注釈は方法にもかかわらず。私はまだ次のエラーを受け取ります: varargsアノテーションを持つメソッドは、同じシグネチャを持つフォワーダメソッドを生成します。 – Eduardo
@varargsでアノテーションされた1つのメソッドで小さな例を作成しました。コンパイラは、1つはSeq、もう1つは配列を持つ2つのメソッドを生成します。これは、scalaメソッドがvarargsを使用してJavaメソッドをオーバーライドするときに、コンパイラによって自動的に行われます。 Seqのメソッドがまだ生成されているので、問題はまだ発生します – Eduardo
私の答えは確かにあなたの問題を解決しません。私の答えはあまりにも急いで申し訳ありません。 – ghik