我是Java的新成員,對於在Java中返回一個數組感到困惑。 下面是我的代碼:Java中返回一個數組是否安全?
public class Pointer{
private final int[] data;
Pointer(){
data = new int[4];
data[0] = 1;
data[1] = 2;
data[2] = 3;
data[3] = 4;
}
public int[] test(){
return data;
}
public void print(){
int length = data.length;
int j;
for(j = 0; j < length; j++){
System.out.println(data[j]);
}
}
static public void main(String[] argv){
Pointer i = new Pointer();
int[] re = i.test();
i.print();
re[2] = 1;
i.print();
}
}
我雖然我返回一個int數組,而不是指針指向,所以當我重新寫了[2] = 1。如何使這個數據不應該被改變指針對象不可變?
相關:[如何在Java中創建不可變對象?](http://stackoverflow.com/questions/6305752/ how-to-create-immutable-objects-in-java) –
你有沒有搜索過它? http://stackoverflow.com/questions/10339930/final-array-in-java或http://stackoverflow.com/questions/3737769/java-unmodifiable-array – Christian
是的,你不能在Java中返回一個數組,只有對它的引用被返回。如果你想返回一個不是原始引用的數組,你必須創建一個副本或做別人建議的內容。 – Radiodef