从映射中读取Java公共变量作为键
我有一个包含几个静态变量的静态类:从映射中读取Java公共变量作为键,java,hashmap,Java,Hashmap,我有一个包含几个静态变量的静态类: public class A{ static { } public static final String param1= "paramVal1"; public static final String param2= "paramVal2"; } 我想更改代码,使变量位于映射中: public class A{ static { } private static Map<String, String> params = new Hash
public class A{
static {
}
public static final String param1= "paramVal1";
public static final String param2= "paramVal2";
}
我想更改代码,使变量位于映射中:
public class A{
static {
}
private static Map<String, String> params = new HashMap<String, String>() ;
public static void initParams() {
params.put("param1", paramVal1);
params.put("param2", paramVal2);
}
公共A类{
静止的{
}
private static Map params=new HashMap();
公共静态void initParams(){
参数put(“参数1”,参数1);
参数put(“参数2”,参数2);
}
然而,我已经有很多类调用这些公共参数,我不想去每个类修改它。有没有办法使用一些define函数,当调用参数时会导致java返回映射值?也就是说,如果有人调用A.param1,它将返回params.get(“param1”)中的参数不如方法容易使用(和覆盖)。因此我认为对您的问题的简短回答是否定的。这是getter和setter的原因之一。但您可以始终做相反的事情,即保留旧参数以实现兼容性,并使用映射用于新用途:
public class A{
static {
param1 = "paramVal1";
param2 = "paramVal2";
params = new HashMap<String, String>;
params.put("param1", param1);
params.put("param2", param2);
// eventually other inits for params
}
public static final String param1= "paramVal1";
public static final String param2= "paramVal2";
public static Map<String, String params;
/* or better private static Map<String,String> params
and access via getter */
public static getParam(String name) {
return param.get(name);
}
}
公共A类{
静止的{
param1=“paramVal1”;
param2=“paramVal2”;
params=新的HashMap;
参数put(“参数1”,参数1);
参数put(“参数2”,参数2);
//最终,参数的其他初始化
}
公共静态最终字符串param1=“paramVal1”;
公共静态最终字符串param2=“paramVal2”;
公共静态映射您可以执行以下操作:
public class A {
private static Map<String, String> params = new HashMap<String, String>();
static {
params.put("param1", "paramVal1");
params.put("param2", "paramVal2");
}
public static final String param1 = params.get("param1");
public static final String param2 = params.get("param2");
}
公共A类{
private static Map params=new HashMap();
静止的{
参数put(“参数1”、“参数1”);
参数put(“参数2”、“参数2”);
}
公共静态最终字符串param1=params.get(“param1”);
公共静态最终字符串param2=params.get(“param2”);
}
我想不会。你至少可以创建一个包含hashmap impl的helper类,然后手动转到每个类并对其进行更改。如果我手动转到每个类并对其进行更改,我可以使用该类的hashmap。创建helper类的好处是什么?这是我唯一的理由-可重用性、基于组件的体系结构re是OO的精髓。你为什么要这么做呢?有了常量字段,客户端代码更安全,更容易阅读。