Java:参数化类"ArrayList"的原始使用



我接手了一个混合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<?,?>>吧。

相关内容

最新更新