スーパータイプのリストをサブタイプのリストにキャストするにはどうすればいいですか? 質問する

スーパータイプのリストをサブタイプのリストにキャストするにはどうすればいいですか? 質問する

たとえば、次の 2 つのクラスがあるとします。

public class TestA {}
public class TestB extends TestA{}

を返すメソッドがありList<TestA>、そのリスト内のすべてのオブジェクトを にキャストして、TestBが得られるようにしたいと考えていますList<TestB>

ベストアンサー1

単純にキャストするだけでList<TestB>ほぼ機能しますが、1 つのパラメーターのジェネリック型を別のパラメーターにキャストすることはできないため、機能しません。ただし、中間のワイルドカード型を介してキャストすることは可能であり、許可されます (ワイルドカード型との間でキャストできるため、チェックされていない警告が表示されます)。

List<TestB> variable = (List<TestB>)(List<?>) collectionOfListA;

おすすめ記事