我接手了一个混合Kotlin和Java的android项目,我正在检查并将所有Kotlin转换为Java,因为我们的团队都懂Java。我遇到的问题是参数化类"ArrayList"的原始使用。我不知道应该把什么类传递给ArrayList<去掉警告。>
下面是我的代码:ArrayList 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))
));
听起来像List<Map<String, Object>>
-列表包含映射(您正在添加调用hashMapOf
的结果)。
这个映射,然后,似乎映射字符串,如ID
,到一个奇怪的东西的抓取袋。这是一种代码气味,需要尽快重构——为什么不像这样:
class WhateverThisMightBe {
String id;
boolean exists;
String notesHtml;
}
,然后有一个List<WhateverThisMightBe>
代替?这是惯用的java/kotlin。aList<Map<String, Object>>
试图在java中以一种非常粗糙的方式重塑javascript/PHP。不是个好主意。
似乎数组元素必须是HashMap<String, Object>
。所以你用ArrayList<HashMap<String, Object>>
或者更好的:List<Map<String, Object>>
。
但是如果MapsKt.hashMapOf()
不能推导出最具体的类型,那就直接用ArrayList<Map<?,?>>
吧。