av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

java - Collections類里的swap函數,源碼為什么要新定義一個final的List型變量l指向傳入的list?

瀏覽:112日期:2023-12-04 15:41:39

問題描述

JDK1.7 源碼如下:

public static void swap(List<?> list, int i, int j) { final List l = list; l.set(i, l.set(j, l.get(i)));}

其中的這句final List l = list 有什么意義?直接操作傳進來的list不也一樣的結果嗎?

本人是自學java的新手,看到這里有點想不通,希望前輩們能幫我解惑,不勝感謝!

問題解答

回答1:

試一下:

import java.util.List;public class Test { public static void swap(List<?> list, int i, int j) {list.set(i, list.set(j, list.get(i))); }}

編譯錯誤:

.Test.java:7: 錯誤: 無法將接口 List<E>中的方法 set應用到給定類型;list.set(i, list.set(j, list.get(i)));^ 需要: int,CAP#1 找到: int,CAP#2 原因: 參數不匹配; Object無法轉換為CAP#1 其中, E是類型變量: E擴展已在接口 List中聲明的Object 其中, CAP#1,CAP#2是新類型變量: CAP#1從?的捕獲擴展Object CAP#2從?的捕獲擴展Object1 個錯誤

因為list的類型是List<?>,不知道具體的類型,所以只能從列表里取出一Object,不能往列表插入。

所以轉成List。

或者換成List<T>:

public static <T> void swap(List<T> list, int i, int j) {...}

標簽: java
主站蜘蛛池模板: 欧美国产视频 | 日韩精品 | 亚洲夜射 | 97精品久久 | 91精品国产综合久久久久久漫画 | 欧美日日| 人人人艹| 精品91久久 | 99精品久久| 99久久精品免费看国产四区 | 欧美日韩成人 | 99在线免费视频 | 97精品超碰一区二区三区 | 亚洲啊v在线 | 久久久免费电影 | 欧美精品一区二区免费 | 午夜影院在线视频 | 国产精品久久久久久久久久久新郎 | 91精品国产91久久久久久 | 久久精品久久精品久久精品 | 视频一区二区在线观看 | 国产一级片 | 欧美在线亚洲 | 日韩av在线免费 | 亚洲草草视频 | 亚洲国产激情 | 国产九九九 | 另类在线 | 真人女人一级毛片免费播放 | 亚洲一区在线日韩在线深爱 | 精品国产乱码久久久久久闺蜜 | 亚洲精品一区二区网址 | 午夜一区二区三区 | 亚洲午夜小视频 | 色影视 | 国产精品1区2区3区 一区中文字幕 | 亚洲一区二区三区四区av | 欧美激情精品久久久久久 | 国产精品久久久久久久久大全 | 国产亚洲精品综合一区 | 精品欧美一区二区久久久伦 |