Lan*_*uhn 35 java generics collections casting type-erasure
假设类B扩展了类A.我有一个List<A>我碰巧知道只包含实例的B.有没有办法把它投到List<A>一个List<B>?
似乎我唯一的选择是迭代集合,一次铸造一个元素,创建一个新的集合.这似乎完全浪费了资源,因为类型擦除使得在运行时完全没有必要.
jar*_*bjo 44
您可以通过无类型List接口进行强制转换:
List<A> a = new ArrayList<A>();
List<B> b = (List)a;
Run Code Online (Sandbox Code Playgroud)
小智 16
你可以试试这个:
List<A> a = new ArrayList<A>();
List<B> b = (List<B>) (List<?>) a;
Run Code Online (Sandbox Code Playgroud)
它基于jarnbjo的答案,但不要使用原始列表.
| 归档时间: |
|
| 查看次数: |
37634 次 |
| 最近记录: |