Нет, вы не можете реализовать это так. То же самое с массивами. Проблема передачи по значению, как уже объяснили другие.
Если вы хотите, чтобы списки обменивались содержимым , вам нужно очистить и скопировать:
public static void swapList(List<Integer> list1, List<Integer> list2){
List<Integer> tmpList = new ArrayList<Integer>(list1);
list1.clear();
list1.addAll(list2);
list2.clear();
list2.addAll(tmpList);
}
Некоторые дополнительные мысли:
List<Integer> list1 = getList1Magic();
List<Integer> list2 = getList2Magic();
if (isSwapReferences()) {
// this does not affect the actual lists
List<Integer> temp = list2;
list2 = list1;
list1 = temp;
} else if (isSwapListContent()) {
// this modifies the lists
swapList(list1, list2); // method from above
}
Стратегия обмена зависит от ваших требований. Первый блок имеет локальный эффект, второй блок - глобальный.