我定義了靜態最終ArrayList,然後將其發送給其他類進行更改。但是由於他是最終的,所以它只能在本地進行更改,就像我的例子中的int一樣。爲什麼它也在Main類中改變了?最終靜態數組列表功能已更改
小的代碼示例:
public class Main {
private static final ArrayList<String> myList = new ArrayList<>(Arrays.asList("One", "Two"));
private static final int num = 5;
public static void main(String[] args) {
SecondClass second = new SecondClass(myList,num);
System.out.println("List in Main: "+myList.get(0));
System.out.println("Num in Main: "+num);
}
}
public class SecondClass {
public SecondClass(ArrayList<String> list, int num)
{
list.set(0,"Three");
num = 10;
System.out.println("List in second: "+list.get(0));
System.out.println("Num in Second: "+num);
}
}
我的輸出:
List in second: Three
Num in Second: 10
List in Main: Three
Num in Main: 5
我希望它是:
List in second: Three
Num in Second: 10
List in Main: One
Num in Main: 5
'Num in Second'是局部變量綁定到參數引用,而不是由其他類設置的靜態變量。另一方面,列表是一個對象引用,因此也是一樣的 –
作爲一個練習,嘗試'SecondClass(ArrayList list,final Integer num)' –