在Java中通过多个类不断引用数组
假设我有两个类:players.java和schedules.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中的一个函数
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的用途是什么?@KeithTrangetNums
是所谓的getter方法,它提供对类中字段的访问(在本例中为Players.nums
)。您只需将字段公开
,并像players.nums
一样使用它,而不是players.getNums()
。但是使用方法访问类字段被认为是最佳实践。@KeithTran“getNums的目的是什么?”。它为您提供了一个放置断点的位置,并允许一些扩展功能,例如,您可以返回列表的克隆或断言有关状态的内容(您甚至可以修改列表的状态,但这有点可怕,getNums
将失去其意义)。哦,我想我不需要断点。我确实需要修改这个列表,因为我把它当作一个花名册。在其他课程中,我需要检查大小是否大于x,然后检查y。这取决于不断引用这个动态数组。后续问题。如果玩家和时间表在通过导入链接在一起的不同文件中,我是否必须将公共类时间表中的addNums更改为static,以便我可以在公共类玩家中对其进行分类?