Java:将集合类型转换为子类型
2022-09-01 03:45:03
假设类扩展类 。我有一个我碰巧知道只包含的实例。有没有办法把B
A
List<A>
B
List<A>
List<B>
似乎我唯一的选择是迭代集合,一次转换一个元素,创建一个新集合。这似乎是对资源的完全浪费,因为类型擦除使得这在运行时完全没有必要。
假设类扩展类 。我有一个我碰巧知道只包含的实例。有没有办法把B
A
List<A>
B
List<A>
List<B>
似乎我唯一的选择是迭代集合,一次转换一个元素,创建一个新集合。这似乎是对资源的完全浪费,因为类型擦除使得这在运行时完全没有必要。
您可以通过非类型化列表接口进行强制转换:
List<A> a = new ArrayList<A>();
List<B> b = (List)a;
你可以试试这个 :
List<A> a = new ArrayList<A>();
List<B> b = (List<B>) (List<?>) a;
它基于jarnbjo的答案,但不要使用原始列表。