Java: 原始使用参数化 class 'ArrayList'
Java: Raw use of parameterized class 'ArrayList'
我接手了一个 android 项目,它混合了 Kotlin 和 Java,我正在研究并将所有 Kotlin 转换为 Java,因为我们的团队知道Java。我 运行 遇到的问题是“参数化 class 'ArrayList' 的原始使用。我无法弄清楚 class 我应该传递给 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))
));
看来数组元素必须是HashMap<String, Object>
。所以你使用 ArrayList<HashMap<String, Object>>
甚至更好:List<Map<String, Object>>
.
但是如果 MapsKt.hashMapOf()
无法推断出最具体的类型 - 只需使用 ArrayList<Map<?,?>>
并完成它。
听起来像 List<Map<String, Object>>
- 该列表包含地图(您正在添加调用 hashMapOf
.
的结果
然后,该映射似乎将字符串(例如 ID
)映射到一堆奇怪的东西。这是一种代码味道,需要尽快而不是稍后进行重构 - 为什么你没有类似的东西:
class WhateverThisMightBe {
String id;
boolean exists;
String notesHtml;
}
然后用 List<WhateverThisMightBe>
代替?那是惯用的 java/kotlin。 List<Map<String, Object>>
正试图以一种非常粗糙的方式在 java 中重塑 javascript/PHP。不是个好主意。
我接手了一个 android 项目,它混合了 Kotlin 和 Java,我正在研究并将所有 Kotlin 转换为 Java,因为我们的团队知道Java。我 运行 遇到的问题是“参数化 class 'ArrayList' 的原始使用。我无法弄清楚 class 我应该传递给 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))
));
看来数组元素必须是HashMap<String, Object>
。所以你使用 ArrayList<HashMap<String, Object>>
甚至更好:List<Map<String, Object>>
.
但是如果 MapsKt.hashMapOf()
无法推断出最具体的类型 - 只需使用 ArrayList<Map<?,?>>
并完成它。
听起来像 List<Map<String, Object>>
- 该列表包含地图(您正在添加调用 hashMapOf
.
然后,该映射似乎将字符串(例如 ID
)映射到一堆奇怪的东西。这是一种代码味道,需要尽快而不是稍后进行重构 - 为什么你没有类似的东西:
class WhateverThisMightBe {
String id;
boolean exists;
String notesHtml;
}
然后用 List<WhateverThisMightBe>
代替?那是惯用的 java/kotlin。 List<Map<String, Object>>
正试图以一种非常粗糙的方式在 java 中重塑 javascript/PHP。不是个好主意。