java - 数组作为实例变量作为参数传递

标签 java arrays nullpointerexception parameter-passing

我有一个类,其中一个数组作为实例变量/字段,该类从另一个类传递到该类中的第一个方法。 我的印象是我也应该能够从另一种方法访问它,而无需将其传递给该方法,但是当我尝试时,我得到了一个 NPE。

代码如下:

public class PLoop {

    // instance variable
    public Memory[] memList;

    // method 1
    public void memPass(Memory[] memLocList) {

        memList = memLocList;
        System.out.println(memList.length);
    }

    // method 2
    public void accessArray() {

        System.out.println(memList.length);
    }
}

当调用第一个方法时,我会在控制台上打印一个整数,表示数组的长度,但是当调用第二个方法时,它是 NPE,表明不是同一个数组。

第二种方法是通过单击 GUI 上的按钮来调用的。与此按钮关联的方法仅具有如下调用:

PLoop.accessArray();

谁能从中看出我做错了什么?

-编辑- 对这些方法的调用来自两个不同的类,每个类都声明一个 PLoop 实例:

proc = new PLoop();

最佳答案

我强烈怀疑您调用 memPass 的实例与您稍后调用 accessArray 的实例不同。

如果您使用相同的实例,那应该绝对没问题。 (特别是,它将存储参数的,因此 memList 不会在不为 null 后变为 null,只是由于其他地方的更改。)

关于java - 数组作为实例变量作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11721848/

相关文章:

php - 如何从数组中过滤特定值?

Javascript 将数组重新映射到对象中,排除 0(零)值

java - 在 onCreateView 方法之外的 Fragment Activity 中使用 Edittext

android - NullpointerException 在 LinkedHashMap 上使用 put 方法

java - 并发工作任务

javascript - 从 Javascript 函数访问 PHP 数组元素

java - 为什么我们不能调用 servlet 构造函数而不是 init 方法来初始化配置参数?

java - android Intent 空指针异常

java - 从 Spring Integration 启动 Spring Batch 作业

java - 尝试使用三个数组Java获得三列数据