基本クラスのコレクションを返すメソッドがあります。
import java.util.*;
class Base { }
class Derived extends Base { }
Collection<Base> getCollection()
{
return Arrays.asList(new Derived(),
new Derived());
}
Arrays.asList
( List<Derived>
) の戻り値の型がメソッド ( ) の戻り値の型と一致しないため、これはコンパイルに失敗しますCollection<Base>
。その理由は理解できます。ジェネリック型が異なるため、2 つのクラスは継承によって関連付けられていません。
メソッドの戻り値の型を Arrays.asList を使用しないように変更することから、派生オブジェクトの 1 つを Base にキャストすることまで、コンパイラ エラーを修正する方法は多数あります。
コンパイラが Arrays.asList 呼び出しのジェネリック型を解決するときに、互換性のある別の型を使用するようにコンパイラに指示する方法はありますか? (私はこのパターンを使用しようとしており、この問題に遭遇し続けているので、それを機能させる方法があれば知りたいです.)
私はあなたが何かをすることができると思った
Collection<Base> getCollection()
{
return Arrays.asList<Base>(new Derived(),
new Derived());
}
それ(Java 6)をコンパイルしようとすると、コンマに「)」が必要であるとコンパイラが不平を言います。