2012-04-03 17 views
1

は、このようにたくさん見える:Scalaのジェネリックコレクションから消費再使用したJavaジェネリックコレクションは、私が書いたJavaのジェネリックコレクションを再利用しようとしている

public class Blah<T> 
    implements List<T> 
{ 
... 
    public void test(T[] array) { 
    ... 
    } 
... 
} 

こと上記を使用して、コンパイルエラーが発生しています。ここで、BlahクラスのメソッドはTではなく、java.lang.ObjectでTを認識します。

Object MyStaticObject { 
    def test[T](array: Array[T]) = { 
     val x = new Blah[T](); 
     x.test(array) // <- error here: Overloaded method with alternatives test[T with java.lang.Object] ... cannot be applied 
} 

ScalaのBlahクラスを書き直すことなくこの状況を回避する方法はありますか? (それはうまくいきますが、私はあまりにも多くのJavaコードを持っていて、全体を移植していません...)

おそらく何らかの暗黙の定義が救助になるかもしれませんか? ありがとう!

+0

これは、最初にジェネリックアレイを使用することによって引き起こされる型消去のように見えますか? –

+0

あなたは 'x.test(array)'を意味すると思いますよね? – leedm777

+0

@dave:はい、編集済み – Nikolaos

答えて

7

制限するトリックします。

一般的なJavaメソッドでは、たとえばint[]Array[Int])というパラメータを受け入れてはいけません。 Blah[Int]Blah<Integer>とし、Array[Int]int[]とし、Integer[]でないものとする。

関連する問題