在Java中通过多个类不断引用数组

在Java中通过多个类不断引用数组,java,Java,假设我有两个类:players.java和schedules.java public class Schedules { public static ArrayList<Integer> addNums(ArrayList<Integer> nums) { nums.add(2); return nums; } } 我在players.c中定义了一个ArrayList(动态大小),我想通过schedules.c中的一个函数

假设我有两个类:players.java和schedules.java

public class Schedules {
    public static ArrayList<Integer> addNums(ArrayList<Integer> nums) {
        nums.add(2);
        return nums;
    }
}
我在players.c中定义了一个ArrayList(动态大小),我想通过schedules.c中的一个函数来传递它,该函数将元素添加到此ArrayList中。如何在每次函数调用时都不创建新数组的情况下执行此操作,例如:

ArrayList<Integer> nums = new ArrayList<Integer>();
nums = schedules.addNums(nums);
ArrayList nums=new ArrayList();
nums=schedules.addNums(nums);
问题是,在我的程序中,我必须多次循环使用addNums之类的函数,这似乎是浪费

我已阅读,我可以声明:

public static ArrayList<Integer> nums = new ArrayList<Integer>();
publicstaticarraylistnums=newarraylist();
因此,在文件schedules.c中,我可以修改players.nums,但我在其他stackoverflow文章中读到,使用静态变量是不好的做法。实际上,我想要的是某种类似于在c中通过函数传递指针并修改ArrayList的功能

用一些代码编辑:

在Players.java中

public class Players {
    public static void main {
        ArrayList<Integer> nums = new ArrayList<Integer>();
        nums.add(1); // add an element to nums
        System.out.println(''+nums.size()); // should be 1
        nums = schedules.addNums(nums);
        System.out.println(''+nums.size()); // should be 2
        nums = schedules.addNums(nums);
        System.out.println(''+nums.size()); // should be 3
    }
}
公共职业玩家{
公共静态真空总管{
ArrayList nums=新的ArrayList();
add(1);//将元素添加到nums
System.out.println(“”+nums.size());//应为1
nums=schedules.addNums(nums);
System.out.println(“”+nums.size());//应为2
nums=schedules.addNums(nums);
System.out.println(“”+nums.size());//应为3
}
}
在Schedules.java中

public class Schedules {
    public static ArrayList<Integer> addNums(ArrayList<Integer> nums) {
        nums.add(2);
        return nums;
    }
}
公共课程表{
公共静态ArrayList addNums(ArrayList nums){
增加(2);
返回nums;
}
}

我不确定我是否正确理解了任务,但这里的示例不会创建
ArrayList的新实例。它使用的是引用传递

class Players {
    private List<Integer> nums = new ArrayList<>();

    public List<Integer> getNums() {
        return nums;
    }
}

class Schedules {
    public void addNums(List<Integer> l) {
        // add nums
        l.add(1);
        l.add(2);
        l.add(4);
    }
}

你说的
c
到底是什么?使用
private ArrayList nums=new ArrayList()
和getter要访问列表,您只需传递类播放器的arrayList的引用,并在schedules类中使用相同的名称。
players.c和schedules.c
在Java中?即使在c中,它们也不是类名,而是文件名;)你应该提供你现在所拥有的(包括静态变量)。你的解释是正确的,但我很难理解。getNums的用途是什么?@KeithTran
getNums
是所谓的getter方法,它提供对类中字段的访问(在本例中为
Players.nums
)。您只需将字段
公开
,并像
players.nums
一样使用它,而不是
players.getNums()
。但是使用方法访问类字段被认为是最佳实践。@KeithTran“getNums的目的是什么?”。它为您提供了一个放置断点的位置,并允许一些扩展功能,例如,您可以返回列表的克隆或断言有关状态的内容(您甚至可以修改列表的状态,但这有点可怕,
getNums
将失去其意义)。哦,我想我不需要断点。我确实需要修改这个列表,因为我把它当作一个花名册。在其他课程中,我需要检查大小是否大于x,然后检查y。这取决于不断引用这个动态数组。后续问题。如果玩家和时间表在通过导入链接在一起的不同文件中,我是否必须将公共类时间表中的addNums更改为static,以便我可以在公共类玩家中对其进行分类?