安卓项目Kotlin转Java遇ArrayList参数化类原始使用告警求解
问题原因
你遇到的告警是Java泛型的原始类型使用提示:ArrayList是参数化泛型类,未指定存储的元素类型直接使用时,编译器会提示存在类型安全风险。
解决方案
你往amenities列表中添加的元素是MapsKt.hashMapOf生成的HashMap实例,该Map的键统一为String类型,值包含字符串、布尔等多种类型,所以你可以将ArrayList的泛型指定为Map<String, ?>即可消除告警。
修正后的代码如下:
ArrayList<Map<String, ?>> amenities = new ArrayList<>(); amenities.add(MapsKt.hashMapOf( TuplesKt.to("ID", q.amenityID), TuplesKt.to("bExists", q.getAnswer().equals("1")), TuplesKt.to("Notes", Utils.CleanStringForUpload(q.amenityNotes)) ));
补充说明
- 如果你后续需要从列表的Map中读取值,只需要根据实际业务场景强转为对应类型即可,示例:
Boolean bExists = (Boolean) amenities.get(0).get("bExists"); String notes = (String) amenities.get(0).get("Notes"); - 如果你可以确定所有Map值的统一父类,也可以将泛型写为
Map<String, Object>,效果完全一致,不会触发告警。
内容的提问来源于stack exchange,提问作者jpeggtulsa
相关产品推荐
相关产品推荐

