解决方法:先初始化空值,再在调用的时候new 赋值
问题来源
springboot项目,其中一个配置类初始化:
public class Config {
public static Map<Long,FriendEntity> arrowQQList = new HashMap<>();
public static FriendEntity ownerQQ ;
public static final Integer FRIEND_OWNER = 0;
public static final Integer FRIEND_ARROW = 1;
public static final Integer FRIEND_NO_ARROW = 2;
}
结果运行的时候
public static Map<Long,FriendEntity> arrowQQList = new HashMap<>();
报了
.ExceptionInInitializerError: null
问题所在
静态类初始化的时候不能new对象
解决方法
先将变量申明但不赋值
public static Map<Long,FriendEntity> arrowQQList;
然后在其他类中调用该变量并赋值
springboot中有个InitializingBean类,会在springboot初始化完成后执行afterPropertiesSet方法,在这里给变量赋值就好了
@Component
public class StartInit implements InitializingBean {
@Override
public void afterPropertiesSet() {
FriendEntity ownerQQ = new FriendEntity();
Map<Long, FriendEntity> arrowQQList = new HashMap<>();
arrowQQList.put(ownerQQ.getQQNum(),ownerQQ);
Config.arrowQQList = arrowQQList;
}
}