HarmonyOS 鸿蒙Next 定义Map常量
HarmonyOS 鸿蒙Next 定义Map常量
预览中不支持 collection.Map, 如下定义的常量会导致预览功能失效:
static readonly LESSON_COLORS = new collections.Map([
[Constants.SUBJECT_GE, [
new collections.Map([[Constants.COLOR_LIGHT, “#3786f2”], [Constants.COLOR_DEFAULT, “#00cb87”], [Constants.COLOR_HIGHLIGHT, “#00cb87”]]),
new collections.Map([[Constants.COLOR_LIGHT, “#3786f2”], [Constants.COLOR_DEFAULT, “#00cb87”], [Constants.COLOR_HIGHLIGHT, “#00cb87”]]),
new collections.Map([[Constants.COLOR_LIGHT, “#3786f2”], [Constants.COLOR_DEFAULT, “#00cb87”], [Constants.COLOR_HIGHLIGHT, “#00cb87”]]),
new collections.Map([[Constants.COLOR_LIGHT, “#3786f2”], [Constants.COLOR_DEFAULT, “#00cb87”], [Constants.COLOR_HIGHLIGHT, “#00cb87”]])
]],
[Constants.SUBJECT_MA, [
new collections.Map([[Constants.COLOR_LIGHT, “#3786f2”], [Constants.COLOR_DEFAULT, “#00cb87”], [Constants.COLOR_HIGHLIGHT, “#00cb87”]]),
new collections.Map([[Constants.COLOR_LIGHT, “#3786f2”], [Constants.COLOR_DEFAULT, “#00cb87”], [Constants.COLOR_HIGHLIGHT, “#00cb87”]]),
new collections.Map([[Constants.COLOR_LIGHT, “#3786f2”], [Constants.COLOR_DEFAULT, “#00cb87”], [Constants.COLOR_HIGHLIGHT, “#00cb87”]]),
new collections.Map([[Constants.COLOR_LIGHT, “#3786f2”], [Constants.COLOR_DEFAULT, “#00cb87”], [Constants.COLOR_HIGHLIGHT, “#00cb87”]])
]]
])
换成Map的话如何定义这个常量呢
static readonly LESSON_COLORS = new collections.Map([
[Constants.SUBJECT_GE, [
new collections.Map([[Constants.COLOR_LIGHT, “#3786f2”], [Constants.COLOR_DEFAULT, “#00cb87”], [Constants.COLOR_HIGHLIGHT, “#00cb87”]]),
new collections.Map([[Constants.COLOR_LIGHT, “#3786f2”], [Constants.COLOR_DEFAULT, “#00cb87”], [Constants.COLOR_HIGHLIGHT, “#00cb87”]]),
new collections.Map([[Constants.COLOR_LIGHT, “#3786f2”], [Constants.COLOR_DEFAULT, “#00cb87”], [Constants.COLOR_HIGHLIGHT, “#00cb87”]]),
new collections.Map([[Constants.COLOR_LIGHT, “#3786f2”], [Constants.COLOR_DEFAULT, “#00cb87”], [Constants.COLOR_HIGHLIGHT, “#00cb87”]])
]],
[Constants.SUBJECT_MA, [
new collections.Map([[Constants.COLOR_LIGHT, “#3786f2”], [Constants.COLOR_DEFAULT, “#00cb87”], [Constants.COLOR_HIGHLIGHT, “#00cb87”]]),
new collections.Map([[Constants.COLOR_LIGHT, “#3786f2”], [Constants.COLOR_DEFAULT, “#00cb87”], [Constants.COLOR_HIGHLIGHT, “#00cb87”]]),
new collections.Map([[Constants.COLOR_LIGHT, “#3786f2”], [Constants.COLOR_DEFAULT, “#00cb87”], [Constants.COLOR_HIGHLIGHT, “#00cb87”]]),
new collections.Map([[Constants.COLOR_LIGHT, “#3786f2”], [Constants.COLOR_DEFAULT, “#00cb87”], [Constants.COLOR_HIGHLIGHT, “#00cb87”]])
]]
])
换成Map的话如何定义这个常量呢
2 回复
参考:
let m:Map<string, Map<string, string>[]> = new Map(
[
["Constants.SUBJECT_GE", [
new Map([["Constants.COLOR_LIGHT", "#3786f2"], ["Constants.COLOR_DEFAULT", "#00cb87"], ["Constants.COLOR_HIGHLIGHT", "#00cb87"]]),
new Map([["Constants.COLOR_LIGHT", "#3786f2"], ["Constants.COLOR_DEFAULT", "#00cb87"], ["Constants.COLOR_HIGHLIGHT", "#00cb87"]]),
new Map([["Constants.COLOR_LIGHT", "#3786f2"], ["Constants.COLOR_DEFAULT", "#00cb87"], ["Constants.COLOR_HIGHLIGHT", "#00cb87"]]),
new Map([["Constants.COLOR_LIGHT", "#3786f2"], ["Constants.COLOR_DEFAULT", "#00cb87"], ["Constants.COLOR_HIGHLIGHT", "#00cb87"]])
]],
["Constants.SUBJECT_MA", [
new Map([["Constants.COLOR_LIGHT", "#3786f2"], ["Constants.COLOR_DEFAULT", "#00cb87"], ["Constants.COLOR_HIGHLIGHT", "#00cb87"]]),
new Map([["Constants.COLOR_LIGHT", "#3786f2"], ["Constants.COLOR_DEFAULT", "#00cb87"], ["Constants.COLOR_HIGHLIGHT", "#00cb87"]]),
new Map([["Constants.COLOR_LIGHT", "#3786f2"], ["Constants.COLOR_DEFAULT", "#00cb87"], ["Constants.COLOR_HIGHLIGHT", "#00cb87"]]),
new Map([["Constants.COLOR_LIGHT", "#3786f2"], ["Constants.COLOR_DEFAULT", "#00cb87"], ["Constants.COLOR_HIGHLIGHT", "#00cb87"]])
]]
]
)
在HarmonyOS(鸿蒙)Next中,定义Map常量通常涉及到使用Java或Kotlin编程语言中的集合框架来创建一个不可变的Map对象。以下是一个简洁的示例,展示了如何在HarmonyOS项目中定义一个Map常量:
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public class Constants {
// 定义一个不可变的Map常量
public static final Map<String, Integer> SAMPLE_MAP = Collections.unmodifiableMap(new HashMap<String, Integer>() {{
put("Key1", 1);
put("Key2", 2);
put("Key3", 3);
}});
}
在这个例子中,我们首先创建了一个HashMap
实例,并向其中添加了一些键值对。然后,我们使用Collections.unmodifiableMap
方法将其转换为一个不可变的Map,这样可以确保该Map常量在定义后不会被修改。
请注意,由于匿名内部类(new HashMap<String, Integer>() {{...}}
)的使用,这种方法在某些情况下可能会导致内存泄漏,特别是在持有Context或其他生命周期相关对象的情况下。因此,在实际应用中,请确保谨慎使用。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html