在java中将映射定义为常量

时间:2011-06-26 14:36:58

标签: java android

对于我的Android应用程序,我需要在一个常量中定义一些键,我认为最好的方法是使用地图。但不确定这是否真的是要走的路,以及如何正确地做到这一点。由于我的目标是Android,因此Bundle也可能是一种选择。

我有一个键列表,如:
“h”=“http”
“f”=“ftp”

基本上,程序是读取QR码(为了防止代码变得太大,我使用超短键),获取这些键,并且必须将它们转换为有用的东西,在我的情况下是协议。

我正在尝试定义一个名为KEY_PROTOCOLS的常量,我认为这应该是一个Map,所以稍后我可以调用类似KEY_PROTOCOLS.get(“f”)的东西来获得属于键“f”的协议。

其他类也应该能够导入此常量,并使用它。所以这张地图必须立即在课堂上填充。

我该怎么做?

4 个答案:

答案 0 :(得分:21)

如果常量由多个类共享,并且如果您想确保某些代码不清除或修改此映射,则最好使其不可修改:

public static final Map<String, String> KEY_PROTOCOLS;

static {
    Map<String, String> map = new HashMap<String, String>();
    map.put("f", "ftp");
    // ...
    KEY_PROTOCOLS = Collections.unmodifiableMap(map);
}

答案 1 :(得分:2)

这样的事情:

  private static final Map<String, String> KEY_PROTOCOLS = new HashMap<String, String>();
 static{
    KEY_PROTOCOLS.put("f", "ftp");
    // More

}

静态初始化程序:

http://www.glenmccl.com/tip_003.htm

答案 2 :(得分:0)

这样可行。

static Map<String, String> map = new HashMap<String, String>();

static {
   map.add("ftp", "ftp");
   ...
}

答案 3 :(得分:0)

在android:

@SuppressWarnings("unchecked")
Pair<String,String>[] pre_ips=new Pair[]{new Pair<String,String>("173.194", "0"), new Pair<String,String>("74.125", "96")};
String ip_1_2,ip_3;
for (Pair<String,String> pre_ip:pre_ips)
    {ip_1_2=pre_ip.first;
     ip_3=pre_ip.second;
    }