HarmonyOS 鸿蒙Next 定义Map常量

发布于 1周前 作者 phonegap100 来自 鸿蒙OS

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的话如何定义这个常量呢

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

回到顶部