对于我的Android应用程序,我需要在一个常量中定义一些键,我认为最好的方法是使用地图。但不确定这是否真的是要走的路,以及如何正确地做到这一点。由于我的目标是Android,因此Bundle也可能是一种选择。
我有一个键列表,如:
“h”=“http”
“f”=“ftp”
基本上,程序是读取QR码(为了防止代码变得太大,我使用超短键),获取这些键,并且必须将它们转换为有用的东西,在我的情况下是协议。
我正在尝试定义一个名为KEY_PROTOCOLS的常量,我认为这应该是一个Map,所以稍后我可以调用类似KEY_PROTOCOLS.get(“f”)的东西来获得属于键“f”的协议。
其他类也应该能够导入此常量,并使用它。所以这张地图必须立即在课堂上填充。
我该怎么做?
答案 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
}
静态初始化程序:
答案 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;
}