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);
}
}
我想使用另一个 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);
}
}