【发布时间】:2020-05-07 16:01:43
【问题描述】:
我有一段代码:
public class Check {
private ArrayList<Integer> diameters; // Array of diameters
public Check(int num) {
diameters = new ArrayList<>(num); // Create an ArrayList object.
for(int i = 0; i < num; i++) { // Initialize the ArrayList.
diameters.add(i, i + 1);
}
}
public ArrayList<Integer> getDiameters() {
return new ArrayList<Integer>(diameters);
}
}
getDiameters() 方法是否返回直径 ArrayList 的内存地址(如果是,我需要像在构造函数中那样单独复制每个值)还是返回直径中所有整数的副本ArrayList?
getDiameters()方法的返回值和变量diameters是否指向同一个内存位置?
getDiameters() 方法中的以下 return 语句是否会是一个有效的语句,而不是写“return new ArrayList<Integer>(diameters);”而不会对安全性造成任何损害?
return diameters;
如果我写上上述声明,会面临哪些安全问题(如果有)?
【问题讨论】:
-
部分是的,但我想逐个问题地理解这个特定场景中的这些概念,因为它太混乱了。
标签: java arraylist reference return-type