我是这堂课:
public class MenuUpElement {
Class<?> classe;
String label;
int viewId;
public MenuUpElement(int viewId, String label, Class<?> classe) {
viewId = this.viewId;
classe = this.classe;
label = this.label;
}
}
然后我有一个带有此声明的静态类 StaticClass :
public static final MenuUpElement[] menuUpElements = new MenuUpElement[]{
new MenuUpElement(12, "Main", MainActivity.class)
, new MenuUpElement(13, "Second", SecondActivity.class)
};
如果我在另一个类中循环 StaticClass.menuUpElements ,我发现了两个元素(正确),但都是null(错误):
menuUpElements[0].classe = null
menuUpElements[0].viewId= 0
menuUpElements[0].label= null
menuUpElements[1].classe = null
menuUpElements[1].viewId= 0
menuUpElements[1].label= null
为什么?
答案 0 :(得分:5)
构造函数中的赋值是向后的
public MenuUpElement(int viewId, String label, Class<?> classe) {
viewId = this.viewId;
classe = this.classe;
label = this.label;
}
考虑
public MenuUpElement(int viewId, String label, Class<?> classe) {
this.viewId = viewId;
this.classe = classe;
this.label = label;
}
答案 1 :(得分:1)
MenuUpElement
的构造函数错误,您使用字段值设置参数。它应该是相反的方式:
public MenuUpElement(int viewId, String label, Class<?> classe) {
this.viewId = viewId;
this.classe = classe;
this.label = label;
}