[問題] 關於 Wildcard 邊界問題
我在Oracle的官方網站的Tutorial學Java,目前看到Generic的部分,
對於後面題目的答案感到很困惑。
它的題目是
Write a generic method to find the maximal element in the
range [begin, end) of a list.
我的答案是
static <T extends Comparable> T max(
List<T> list, int begin, int end) {
T max = list.get(begin);
for (int i = begin + 1; i < end; i++)
max = (list.get(i).compareTo(max) > 0) ? list.get(i) : max;
return max;
}
它的解答是
static <T extends Comparable<? super T>> T max(
List<? extends T> list, int begin, int end) {
T maxElem = list.get(begin);
for (++begin; begin < end; ++begin) {
if (list.get(begin).compareTo(maxElem) > 0)
maxElem = list.get(begin);
}
return maxElem;
}
list 裡面應該只能放 T 跟它的子類別吧,那為什麼 Comparable 的類別參數
要給下界為T,我也完全不懂T的型態定義,如果我 list 裡面放的是T的子類別
那Comparable的下界為T不就不合理了嗎,其實我也不懂我的問題到底是什麼,
Generic跟Wildcard把我搞的好亂...Generic是OO的概念吧,我是不是應該去找
本OO的書來看?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.230.125.79
※ 文章網址: https://www.ptt.cc/bbs/java/M.1443378540.A.738.html
→
09/28 10:02, , 1F
09/28 10:02, 1F
→
09/28 10:03, , 2F
09/28 10:03, 2F
→
09/28 10:05, , 3F
09/28 10:05, 3F
→
09/28 10:06, , 4F
09/28 10:06, 4F
→
09/28 10:09, , 5F
09/28 10:09, 5F
java 近期熱門文章
PTT數位生活區 即時熱門文章