看板 java 關於我們 聯絡資訊
http://dl.dropbox.com/u/6319790/2012JavaTWOLambda.zip 這是良葛格的ppt 裡頭第15頁的compose函式是這樣定義的 static <A, B, C> Func<A, C> compose(final Func<A, B> f, final Func<B, C> g) { return new Func<A, C>() { public C apply(A x) { return g.apply(f.apply(x)); } }; } 其中Func是一介面 有一apply方法 請問紅字的<A, B, C>指的是什麼意思? 要查也不知道要用甚麼關鍵字 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.43.178.97
LaPass:一樣是泛型,不過有兩個型別變數 12/27 17:52
LaPass:有用過Map之類的物件嗎? 最常用的型別變數的泛型就是這個 12/27 17:54
我想問的是 如果把<A, B, C>去掉 程式會沒辦法運作嗎?
PsMonkey:你開個 IDE 試試看就知道了阿 ==.== 12/27 18:09
coolcomm:正在試 12/27 18:10
luoqr:你類別上沒有定義A,B,C 所以function就要定義A,B,C 12/27 18:13
coolcomm:無法編譯 但不懂為什麼 12/27 18:13
luoqr:http://0rz.tw/ZaeD9 參考一下 不見得是對的 XD 只是筆記... 12/27 18:17
TsaiCF:看不懂一段泛型?還是看不懂泛型? 看看 generic methods 12/27 18:17
懂了.但不太懂為什麼Java語言一定要特別在前面多加註<A, B, C> 如果設計成不用加註不是可以讓人少打一些字嗎?
coolcomm:怕打錯字? 12/27 18:26
luoqr:你在類別上如果有寫<A,B,C> 後面的method就都不用宣告<A,B,C 12/27 18:27
我想問的是為什麼Java不設計成即使不加<A, B, C>也能編譯通過
luoqr:要宣告定義 才能限定你的泛型範圍呀 不然compiler就看不懂了 12/27 18:29
luoqr:ex:<T, S extends T> void copy (List <T> a, List <S> b) 12/27 18:30
我知道我的盲點了 謝謝 如果設計成void copy (List<T> a,List<? extends T> b)也能通過編譯 那這樣函式中就沒有辦法宣告型態為S的變數
luoqr:如上若不寫定義 S 就沒辦法限定 extends T 12/27 18:31
luoqr:是的 12/27 18:35
※ 編輯: coolcomm 來自: 114.43.181.128 (12/27 18:49)