java - 是否可以加入并设置为另一个 class 的静态变量

java - is it possible accede and set to a static variable of another class

我想使用另一个 class 的静态方法从另一个 class 加入并设置一个静态变量。

这是示例代码:

public class A {


    private static HashMap<Integer, String> hmFromIdToDesc = null;


    public static void setHm(HashMap<Integer, String> hm) {
    if(hmFromIdToDesc == null) DummyContent.hmFromIdToDesc = hm;}
}

我调用静态方法的另一个 class:

public class B{

    private HashMap<Integer, String> hm = new HashMap<Integer, String>();

    A.setHm(hm);
}

我认为这段代码有严重的错误,但我必须修改一段代码并且 class A 仅以静态方式使用,所以我想保持这种用法.

编译器说在 A.setHm(hm) 我有一个 java.lang.ExceptionInInitializerError.

我想知道在其他 class.

中是否可以通过静态方法设置静态变量

感谢您的回答!!!

编辑:

public class B{

    private HashMap<Integer, String> hm = new HashMap<Integer, String>();

    void myMethod(){
        A.setHm(hm);
    }
}

真正的情况是,我尝试,就像你说的@Vladimir,使用 static{}(我的意思是块)但是在方法内部是不可能的,在 myMethod 之外使用 static{} 是一个问题,因为我必须将许多变量设为静态,但在我的代码中很难做到这一点(发布的代码只是一个示例,可以更好地理解我的问题)。

还有其他想法吗?

为什么要 hm 非静态?如果要静态初始化对象,hm 必须是 static 并且 A.setHm(hm) 必须从 static 块中调用。

public class B {
    private static HashMap<Integer, String> hm = new HashMap<Integer, String>();

    static {
        A.setHm(hm);
    }
}