java - 实现 N 个常量之间链接的最佳方式

标签 java hashmap constants

我找不到更好的标题(如果找到更好的标题,请随意编辑),但用例如下。我有两个常量列表。其中一个包含我在应用程序中使用的常量,另一个包含通过 CSV 文件(连同数据)发送给我的不同常量。

举一个粗略的例子:在 CSV 文件中,有一个名为“客户端 ID”的字段。在我的应用程序中,我想使用一个名为“clientId”的字段。因此,我基本上需要在两个常量之间创建一个静态链接,以便我可以根据需要实现的目标轻松地从一个常量切换到另一个常量。

我考虑过创建值的静态Map(String, String),但我认为可能有更好的解决方案。

谢谢!

编辑:将标题更改为“N”个常量而不是 2,因为在这种情况下 Hashmap 似乎不再是一个选项。

最佳答案

您可以使用双括号初始化程序惯用语来使 map 初始化靠近 map 声明,因此它不会那么“丑陋”,例如:

static Map<String, String> someMap = new HashMap<String, String>() {{
        put("one", "two");
        put("three", "four");
}};

请注意,如果没有 static 修饰符,每个匿名类(本示例中创建了一个)都会保存对封闭对象的引用,并且如果您将此映射的引用提供给其他类它将防止封闭类被垃圾收集。

幸运的是,我们对java更新有了希望,在java 9中将会有非常方便的Map.of()来帮助我们更安全地做到这一点。

关于java - 实现 N 个常量之间链接的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45857456/

相关文章:

objective-c - 常量的条件编译警告

java - 为什么没有定义 getEntityManager()? "Cannot resolve method getEntityManager"

java - 异常 java.lang.IllegalArgumentException : object is not an instance of declaring class at sun. reflect.NativeMethodAccessorImpl.invoke0

java - 为什么 JMSAppender 使用同步发送?我们可以改变这一点吗?

java - 将 int 值转换为字母值

c++ - 为什么将 "pointer to pointer to non-const"转换为 "pointer to pointer to const"是不合法的

java - 如何将 hibernate @DynamicUpdate 与 spring data jpa 一起使用?

java - 设备重启后检索HashMap

Java 遍历 HashMap<?, List<?>> 并为每个 Key 计算 Key 有多少个 Values

c++ - (&const_object) 可以评估为临时地址