枚举中具有多个值的java.lang.ExceptionInInitializerError [英] java.lang.ExceptionInInitializerError in enum with multiple values
本文介绍了枚举中具有多个值的java.lang.ExceptionInInitializerError的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是枚举的代码(在单例类中):
This is the code of enum (inside of singleton class):
public class GlobalStore extends Application{
.....
......
.....
public synchronized static GlobalStore getInstance() {
if(instance==null){
instance = new GlobalStore();
}
return instance;
}
.....
......
public static enum Category {
CATEGORIA_DB(1,instance.getString(R.string.cat_dep_bel),"db"),
CATEGORIA_EL(2,instance.getString(R.string.cat_edu_lec),"el"),
CATEGORIA_E(3,instance.getString(R.string.cat_entre),"e"),
CATEGORIA_EM(4,instance.getString(R.string.cat_est_mod),"em"),
CATEGORIA_GV(5,instance.getString(R.string.cat_gas_vinos),"gv"),
CATEGORIA_DH(6,instance.getString(R.string.cat_dis_hog),"dh"),
CATEGORIA_S(7,instance.getString(R.string.cat_salud),"s"),
CATEGORIA_ST(8,instance.getString(R.string.cat_ser_tec),"st"),
CATEGORIA_T(9,instance.getString(R.string.cat_turis),"t"),
CATEGORIA_AC(10,instance.getString(R.string.cat_arte_cultura),"ac");
private final int id;
private final String gloss;
private final String code;
Category(int mId, String mGloss, String mCode) {
this.id = mId;
this.gloss = mGloss;
this.code = mCode;
}
public int getId() {
return id;
}
public String getGloss() {
return gloss;
}
public String getImagen() {
return "icon_"+code;
}
public String getSelectedImagen() {
return this.getImagen() + "_red";
}
public String getDrawString() {
return "mn_"+code+"1";
}
}
此行中的错误:
public static Category findCategoryById(int mId) {
for (Category categoria : Category.values()) { //HERE is error in Category.values() -- line 327
if (categoria.getId()==mId) {
return categoria;
}
}
return null;
}
.....
}
更新
logcat中的错误:
the error in logcat:
01-24 05:42:49.310 31800-31800/? E/AndroidRuntime: FATAL EXCEPTION: main
01-24 05:42:49.310 31800-31800/? E/AndroidRuntime: Process: com.assertsoft.beneplus.alpha, PID: 31800
01-24 05:42:49.310 31800-31800/? E/AndroidRuntime: java.lang.ExceptionInInitializerError
01-24 05:42:49.310 31800-31800/? E/AndroidRuntime: at com.assertsoft.model.GlobalStore.findCategoriaById(GlobalStore.java:327)
01-24 05:42:49.310 31800-31800/? E/AndroidRuntime: at com.assertsoft.adapters.ListaCuponesAdapter.getView(ListaCuponesAdapter.java:196)
推荐答案
我相信你的代码在这里:
I believe your code here:
Category(int mId, String mGloss, String mCode) {
this.id = mId;
this.gloss = mGloss;
this.code = mCode;
}
期望三个值初始化。但是这行:
expects three values to be initialised. But this line :
public static Category findCategoryById(int mId)
只是其中的一个。在静态上下文中,所有参数都需要初始化。
is initialising just one out of those. In that static context all the parameters needs to be initialised.
这篇关于枚举中具有多个值的java.lang.ExceptionInInitializerError的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文