Jac*_*kie 2 java generics casting
我正在升级以下代码:
return this.getMethod().execute(mp);
Run Code Online (Sandbox Code Playgroud)
execute方法有签名的地方:
public Map<String,Object> execute(Object mp)
Run Code Online (Sandbox Code Playgroud)
我有代码需要返回方法Map<String, List<Map<String, String>>>,但编译器阻塞了转换.我可以/如何正确地进行演员?Java 5和6之间是否存在任何变化,这会使现在成为编译时问题?
只要您确定返回的地图只包含类型的值List<Map<String, String>>,那么您需要使用双重转换:
Map<String, Object> map = this.getMethod().execute(mp);
@SuppressWarnings("unchecked") //thoroughly explain why it's okay here
Map<String, List<Map<String, String>>> mapWithNarrowedTypes =
(Map<String, List<Map<String, String>>>)(Map<?, ?>)map;
return mapWithNarrowedTypes;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2920 次 |
| 最近记录: |