有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓在java中将映射定义为常量

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

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

基本上,程序是读取二维码(为了防止码变得太大,我使用的是超短键),获取这些键,并将它们转换成有用的东西,在我的例子中是协议

我试图定义一个常量,称为KEY_协议,我认为这应该是一个映射,所以稍后我可以调用类似KEY_协议的东西。获取(“f”)以获取属于密钥“f”的协议

其他类也应该能够导入并使用该常量。因此,必须立即在类中填充此映射

我该怎么做


共 (4) 个答案

  1. # 1 楼答案

    这会奏效的

    static Map<String, String> map = new HashMap<String, String>();
    
    static {
       map.add("ftp", "ftp");
       ...
    }
    
  2. # 2 楼答案

    在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;
        }
    
  3. # 3 楼答案

    大概是这样的:

      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

  4. # 4 楼答案

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

    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);
    }