java - Java中的静态变量通过引用传递

标签 java variables global-variables pass-by-reference

<分区>

我在 A 类中有以下内容:

static ArrayList<Student> students;

我在 B 类中有以下内容:

public static void populate_students(ArrayList<Student> students) {
        students = new ArrayList<Student>();
// ...
}

在 Debug模式下,我看到student在方法中被初始化(不是null)但是返回到A类后,student为null。为什么会这样?我认为在 Java 中任何地方都可以看到对对象所做的更改。

最佳答案

如果将静态students 变量传递给populate_students,该方法可以更改该变量引用的实例的状态,但不能分配新的该变量的值。因此,如果您将 null 传递给方法,则静态变量在方法返回后将保持为 null

相反,您需要从方法返回 List:

public static ArrayList<Student> populate_students() {
    ArrayList<Student> students = new ArrayList<Student>();
// ...
    return students;
}

并将其分配给静态变量:

static ArrayList<Student> students = B.populate_students();

关于java - Java中的静态变量通过引用传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30444722/

相关文章:

java - 最后一位数字补零

java - 使用 JOIN FETCH 性能问题查询

java - 简单的 OOP/私有(private)变量查询 - Java

bash - shell变量的名称可以有空格吗?

javascript - 使用 JavaScript 中的 switch 循环更改背景颜色

c++ - CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS不涵盖全局变量

java - EclipseLink 2.7.0 和 JPA API 2.2.0 - 签名不匹配

java - “点击方法”不断返回 'Stale Element Exceoption' ?

使用变量作为索引的 Swift 元组索引?

android - 实现购物车