在Java中控制类加载顺序

0 java static classloader

我创建了一个包含一堆属性值的类.为了初始化该类,我必须调用一些静态方法"configure()",它从XML文件配置它.

该类应该用于存储一些数据,以便我可以写

PropClass.GetMyProperty();
Run Code Online (Sandbox Code Playgroud)

configure()在main中调用了一个静态块,所以我可以在任何地方使用它

如果我将其他类的静态常量成员设置为我的"PropClass"中的值,我得到null,

class SomeClass {

   static int myProp = PropClass.GetMyProperty();

}
Run Code Online (Sandbox Code Playgroud)

这可能是因为在调用configure之前计算了该表达式.我该如何解决这个问题?

如何强制configure()执行首先执行的调用?谢谢

Pet*_*háč 5

你可以使用静态代码块来做到这一点

static {
   configure();
}
Run Code Online (Sandbox Code Playgroud)

静态初始化程序块的语法?剩下的就是关键字static和一对匹配的花括号,其中包含在加载类时要执行的代码.取自这里