2

SampleClassインターフェイスを実装するクラスがありますISampleInterface
メソッドはCollection<ISampleInterface>引数として必要ですが、私のコードでは単一のSampleClassオブジェクトを渡したいです。
私はいくつかのキャストをしようとしていました:

Collection<ISampleInterface> col = 
   (Collection<ISampleInterface>) Arrays.asList(new SampleClass[]{sampleClassInstance});

しかし、キャストエラーが発生しました:

Cannot cast from List<SampleClass> to Collection<ISampleInterface>

1つのエレガントなラインでそれを行う方法はありますか?

4

4 に答える 4

3

正しいジェネリック型引数を指定するだけです:

Collection<ISampleInterface> col =
        Arrays.<ISampleInterface>asList(sampleClassInstance);

( varargs )を取るため、配列の作成は暗黙的であるため、new SampleClass[] { ... }不要であることに注意してください。asListT...

さらに言えば、次のように書くこともできます。

Collection<ISampleInterface> col =
        Collections.<ISampleInterface>singleton(sampleClassInstance);

Collections.singletonjavadocから:

指定されたオブジェクトのみを含む不変のセットを返します。返されるセットはシリアライズ可能です。

于 2013-05-01T13:30:43.817 に答える
-1

エラーの理由は、Java のジェネリックが型共変ではないためです。この点については、Web でチュートリアルを読むことができます。

次の代替手段を使用できます。

col.addAll(Arrays.asList(new SampleClass[]{sampleClassInstance}));
于 2013-05-01T08:57:49.533 に答える