```java public class ExampleMethod6 { public static void main(String[] args) { /* * 以下兩個承載著不同型別的 list 都呼叫了同一個方法進行反轉。 */ List<String> list1 = new ArrayList<String>(); list1.add("str1"); list1.add("str2"); list1.add("str3"); list1 = reverseList(list1); //[str3, str2, str1] reverseList2(list1); //[str1, str2, str3] List<Integer> list2 = new ArrayList<Integer>(); list2.add(1); list2.add(2); list2.add(3); list2 = reverseList(list2); //[3, 2, 1] reverseList2(list2); //[1, 2, 3] /* * 同樣的,以下兩個不同形態的陣列呼叫相同的方法。 * 也是可以正常的印出內容。 */ String[] strArr = new String[] { "1", "2", "3" }; printArray(strArr); Integer[] intArr = new Integer[] { 1, 2, 3 }; printArray(intArr); } //直接對 list 操作,所以不需要 return 物件 public static <T> void reverseList2(List<T> list) { int size = list.size(); for (int i = 0; i < size / 2; i++) { int j = size - 1 - i; T temp = list.get(i); list.set(i, list.get(j)); list.set(j, temp); } } //創造一個新的 list 去承接結果,所以回傳後也需要有變數去接 public static <T> List<T> reverseList(List<T> list) { List<T> reversed = new ArrayList<>(); for (int i = list.size() - 1; i >= 0; i--) { reversed.add(list.get(i)); } return reversed; } public static <T> void printArray(T[] array) { for (T element : array) { System.out.println(element); } } } ```