だから私は2つのクラスがあります。クラスB
はクラスを拡張しA
ます。ArrayList
タイプのオブジェクトを含むオブジェクトを作成しているB
ので、リストはタイプArrayList<B>
です。入力パラメータタイプが。ArrayList
のメソッドで使用したいと思います。はの子クラスであるため、このアプリケーションを含め、どこでも使用できるのは当然のことです。useList
ArrayList<A>
B
A
A
ただし、コンパイラはこれを好まないようです(以下のコードのエラーメッセージを参照してください)。メソッドに渡すときにもキャストしようとArrayList<B>
しArrayList<A>
ましたが、それも機能しませんでした。
コード:
public class Test {
private class A { }
private class B extends A { }
public static void useList(ArrayList<A> aList) { }
public static void main(String[] args) {
ArrayList<B> bList = new ArrayList<B>();
/* "The method test(ArrayList<Test.A>) in the type Test
* is not applicable for the arguments (ArrayList<Test.B>)" */
useList(bList);
/* "Cannot cast from ArrayList<Test.B> to ArrayList<Test.A>" */
useList((ArrayList<A>)bList);
}
}
私は間違いなく愚かなことをしているので、アドバイスをいただければ幸いです。
ありがとう!