在Java类中经常使用相同的字符串作为Map键

时间:2018-01-15 13:54:25

标签: java hashmap duplicates refactoring

考虑下一个场景:

void foo(Map<String, String> params) {
    String myValue = params.get("myKey");
}

void bar(Map<String, String> params) {
    String myValue = params.get("myKey");
}

// ... and so on

我想将 myKey 定义为私有静态最终变量:

private static final String MY_KEY = "myKey";

然后使用它:

void foo(Map<String, String> params) {
    String myValue = params.get(MY_KEY);
}

这是一种好习惯还是我们可以做得更好?

2 个答案:

答案 0 :(得分:3)

将重复的字符串文字提取为常量绝对是一种很好的做法,无论它是否用作Map中的键。

答案 1 :(得分:2)

如果您想使用行为驱动,最好将密钥添加为param:

void foo(Map<String, String> params, String key) {
    String myValue = params.get(key);
}

关于常量,也可以将它放在Enum中,然后你可以在Enum中收集多个键。或者在Constants类中收集它们。由你决定。

唯一的问题是,你有一个虚空返回类型很奇怪。我希望String:

String getFooByKey(Map<String, String> params, String key) {
    return params.get(key);
}