【发布时间】:2017-09-09 17:42:39
【问题描述】:
我想使用另一个类的静态方法加入并设置另一个类的静态变量。
这是示例代码:
public class A {
private static HashMap<Integer, String> hmFromIdToDesc = null;
public static void setHm(HashMap<Integer, String> hm) {
if(hmFromIdToDesc == null) DummyContent.hmFromIdToDesc = hm;}
}
我调用静态方法的另一个类:
public class B{
private HashMap<Integer, String> hm = new HashMap<Integer, String>();
A.setHm(hm);
}
我认为在这段代码中存在严重错误,但我必须修改代码,并且 A 类仅以静态方式使用,因此我想保持这种用法。
编译器说在 A.setHm(hm) 上我有一个 java.lang.ExceptionInInitializerError。
我想知道是否有办法从其他类的静态方法中设置静态变量。
谢谢你的回答!!!
编辑:
public class B{
private HashMap<Integer, String> hm = new HashMap<Integer, String>();
void myMethod(){
A.setHm(hm);
}
}
真正的情况是,我尝试,就像你说的@Vladimir,使用静态{}(我的意思是块)但是在方法内部是不可能的并且在 myMethod 之外使用静态{}是一个问题,因为我必须把许多变量是静态的,但在我的代码中很难做到这一点(发布的代码只是一个示例,可以更好地理解我的问题)。
还有什么想法吗?
【问题讨论】:
标签: java static static-methods static-variables