java - Java中控制类加载顺序

标签 java static classloader

我创建了一个包含一堆属性值的类。 为了初始化该类,我必须调用一些静态方法“configure()”,该方法从 XML 文件对其进行配置。

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

PropClass.GetMyProperty();

我从主程序中的静态 block 调用configure(),这样我就可以在任何地方使用它

但是

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

class SomeClass {

   static int myProp = PropClass.GetMyProperty();

}

这可能是因为该表达式是在调用配置之前计算的。 我该如何解决这个问题?

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

最佳答案

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

static {
   configure();
}

静态初始化 block 的语法?剩下的就是关键字 static 和一对匹配的花括号,其中包含加载类时要执行的代码。 taken from here

关于java - Java中控制类加载顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/741512/

相关文章:

java - JDK ClassLoader.getResourceAsStream 坏了吗? (未关闭的资源)

java - 哪个 jar 会被加载到 JVM 中?

java - 类文件编辑器未找到冗余源

java - oracle jdbc 驱动版本疯狂

gwt - 简单的 GWT 托管

c# - 多线程环境中的静态方法

java - 不能从静态上下文中引用非静态字符串

java - 如何处理线程中断等瞬时类加载错误

java - 统计方法变量实例的方法调用次数

Java 流将 excel CSV 收集到基于列的总和过滤的列表中