如果您在Java中具有原始类型,则可以使用无界通配符安全地将其分配/转换为相同类型.例如,a List可以安全地转换为a List<?>,这会消除其原始特性,并允许您以安全(类型检查)的方式使用它1.
在另一方面,Java并不让您从投List 本身参数与原始类型,比如List<Optional>同类型的参数列表中采用无界通配符,像List<Optional<?>>.
您仍然可以通过完全丢弃原始数据List并再次备份(通过赋值隐式)来执行此操作:
List<Optional> rawOptionalList = null;
List<Optional<?>> wildcardOptionalList = (List)rawOptionalList;
Run Code Online (Sandbox Code Playgroud)
当然,这会触发关于未经检查的转换(从List到List<Optional<?>>)的警告.
在我看来,虽然这种转换可以保证安全:List<Optional<?>>不仅仅像List<Optional>将原始产品Optional转换Optional<?>为安全一样安全吗?
1 ...但你永远无法在此列表中添加任何内容,因为没有任何内容与?该add(?)方法的捕获相匹配.这是你为安全付出的代价.
| 归档时间: |
|
| 查看次数: |
117 次 |
| 最近记录: |