最近写一个配置类打算配置文件的信息 用一个配置类的静态成员保存,所以在静态代码块里读取配置文件。考虑类 加载 后 类静态成员变量与类静态代码块的执行顺序问题。 如果静态代码块先实行 而类的 静态成员变量未执行。那 在静态成员变量初始化之前 就向静态成员变量赋值是不是会出 问题。
经测试 非实例对象 执行的顺序 是 类加载 首先初始化 类静态成员变量 类静态代码块 ,静态方法是调用的时候执行。
package com.yjm.ldapdao;
import java.io.IOException;
import java.util.Properties;
import org.apache.log4j.Logger;
public class LdapConf {
public LdapConf() {
}
public static Logger logger= Logger.getLogger(LdapConf.class);
public static String host="test";
public static String port;
public static String username;
public static String password;
public static Properties properties;
static {
properties = new Properties();
try {
properties.load(LdapConf.class
.getResourceAsStream("info.properties"));
host=properties.getProperty("host");
System.out.println(host);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void test(){
host="sdfg";
System.out.println(host);
}
public static void main(String[] args) {
System.out.println(host);
}
}
结果:
172.16.0.171
172.16.0.171