[問題] Recursive type parameter
最近在看 Effective Java,但是裡面有一些泛型的地方不太了解,想請教一下各位
先來個我懂的:
static <T extends Comparable<T>> T max(T[]) { ... }
static <T extends Comparable> T max(T[]) { ... }
第一種跟第二種的差別應該是,第一種宣告確保只能跟 T 類的物件比較,
第二種的話就是可以跟任何物件比較,不限定是 T。
而在 Effective Java Item 2 裡介紹的 Builder 中,書上這樣子宣告類別:
abstract static class Builder<T extends Builder<T>> {
public T addTopping(Topping topping) { ... }
public abstract T self();
}
我想問一下這邊使用 <T extends Builder<T>> 或 <T extends Builder>
的差別是什麼呢?
我自己用 IntelliJ 看的時候,如果宣告成 <T extends Builder<T>>
addTopping 跟 self 的回傳型態都是 T
若是宣告成 <T extends Builder> 的話回傳型態都變成 Builder
實在是被這種 recursive type parameter 搞暈了,感覺自己還是沒有搞懂
泛型的用法...
--
→
06/14 21:48,
06/14 21:48
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 153.150.177.211
※ 文章網址: https://www.ptt.cc/bbs/java/M.1551361417.A.2B5.html
→
03/01 00:07,
5年前
, 1F
03/01 00:07, 1F
→
03/01 00:07,
5年前
, 2F
03/01 00:07, 2F
→
03/01 00:08,
5年前
, 3F
03/01 00:08, 3F
→
03/01 00:08,
5年前
, 4F
03/01 00:08, 4F
→
03/01 00:09,
5年前
, 5F
03/01 00:09, 5F
→
03/01 00:11,
5年前
, 6F
03/01 00:11, 6F
推
03/01 09:24,
5年前
, 7F
03/01 09:24, 7F
→
03/01 09:52,
5年前
, 8F
03/01 09:52, 8F
java 近期熱門文章
PTT數位生活區 即時熱門文章