[J2SE] 看不懂一段泛型

看板java作者 (coolcomm)時間11年前 (2012/12/27 17:47), 編輯推噓6(608)
留言14則, 5人參與, 最新討論串1/1
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

12/27 17:52, , 1F
一樣是泛型,不過有兩個型別變數
12/27 17:52, 1F

12/27 17:54, , 2F
有用過Map之類的物件嗎? 最常用的型別變數的泛型就是這個
12/27 17:54, 2F
我想問的是 如果把<A, B, C>去掉 程式會沒辦法運作嗎?

12/27 18:09, , 3F
你開個 IDE 試試看就知道了阿 ==.==
12/27 18:09, 3F

12/27 18:10, , 4F
正在試
12/27 18:10, 4F

12/27 18:13, , 5F
你類別上沒有定義A,B,C 所以function就要定義A,B,C
12/27 18:13, 5F

12/27 18:13, , 6F
無法編譯 但不懂為什麼
12/27 18:13, 6F

12/27 18:17, , 7F
http://0rz.tw/ZaeD9 參考一下 不見得是對的 XD 只是筆記...
12/27 18:17, 7F

12/27 18:17, , 8F
看不懂一段泛型?還是看不懂泛型? 看看 generic methods
12/27 18:17, 8F
懂了.但不太懂為什麼Java語言一定要特別在前面多加註<A, B, C> 如果設計成不用加註不是可以讓人少打一些字嗎?

12/27 18:26, , 9F
怕打錯字?
12/27 18:26, 9F

12/27 18:27, , 10F
你在類別上如果有寫<A,B,C> 後面的method就都不用宣告<A,B,C
12/27 18:27, 10F
我想問的是為什麼Java不設計成即使不加<A, B, C>也能編譯通過

12/27 18:29, , 11F
要宣告定義 才能限定你的泛型範圍呀 不然compiler就看不懂了
12/27 18:29, 11F

12/27 18:30, , 12F
ex:<T, S extends T> void copy (List <T> a, List <S> b)
12/27 18:30, 12F
我知道我的盲點了 謝謝 如果設計成void copy (List<T> a,List<? extends T> b)也能通過編譯 那這樣函式中就沒有辦法宣告型態為S的變數

12/27 18:31, , 13F
如上若不寫定義 S 就沒辦法限定 extends T
12/27 18:31, 13F

12/27 18:35, , 14F
是的
12/27 18:35, 14F
※ 編輯: coolcomm 來自: 114.43.181.128 (12/27 18:49)
文章代碼(AID): #1Gt1acyh (java)