Re: [問題] generic裡面的type
※ 引述《Fenikso (我是蜜蜂~)》之銘言:
: ※ 引述《Fenikso (我是蜜蜂~)》之銘言:
: : → Fenikso:而且我要的是"Class<T>"的instance 不是"T"的 04/30 11:47
: : → Fenikso:T的instance可能世界上根本就不存在XD 04/30 12:03
: : 推 qrtt1:太多可能性, 是否要宣告此題不值得浪費時間思考 !? 04/30 12:20
: : → Fenikso:哪來的太多可能性 那根本不是重點啊.. 04/30 12:37
: : 推 godfat:是要你問題講清楚啦,不然只有你知道什麼是重點 04/30 13:50
: : → adrianshum:如果你確定 collection 有東西就拿第一個 element 吧?. 04/30 14:53
: 不行 因為 第一個element.getClass()傳回的不一定是Class<T>
: 可能是T的subclass
: ---
: 好吧 那我就再講清楚一點..
: 實作一個function, prototype長這樣
: public Class<T> foo(Collection<T> x) {}
: 例如說
: Collection<Integer> c = 隨便什麼東西
: foo(c) 傳回來的要是Integer.class
: 這樣夠清楚了吧
: ---
那就如 qrtt1 說的, 這種做法只有另外再傳一個 class 進來
像這樣:
public void foo(Collection<T> x , Class<T> clazz) {
// do whatever u want with clazz
}
Generics 在這裡能為你做的只是幫你做 type checking, makesure
你傳的 clazz 沒有傳錯而已
e.g.
//compilation failure
public<T> void foo(new ArrayList<String>(), Integer.class);
alien
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 202.155.236.82
※ 編輯: adrianshum 來自: 202.155.236.82 (04/30 15:50)
推
05/01 02:23, , 1F
05/01 02:23, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 4 篇):