有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java数组元素具有空字段

我上过这门课:

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中循环。menuuplements在另一个类中,我发现了两个元素(正确),但都为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

为什么?


共 (2) 个答案

  1. # 1 楼答案

    MenuUpElement的构造函数错误,您正在使用字段的值设置参数。应该是另一种方式:

    public MenuUpElement(int viewId, String label, Class<?> classe) {
        this.viewId = viewId;
        this.classe = classe;
        this.label = label;
    }
    
  2. # 2 楼答案

    构造函数中的赋值是向后的

    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;
    }