瀏覽通過Guava庫只見從文件類readlines方法方法,這種怪異的簽名:Java的泛型怪異的返回類型
public static <T> T readLines(File file,
Charset charset,
LineProcessor<T> callback)
我知道在Java泛型一點點,但是這把我難倒了。
雙T在這裏意味着什麼?爲什麼是第一個角度括號?
UPDATE:謝謝你的回答。我仍然不清楚爲什麼我應該在括號內使用T。爲什麼例如不能將其僅僅是:
public static <> T readLines()
或
pulibc static <K> T readLines()
抑或是Java語法決定了相同的字母必須使用?
現在this甚至wierder:
static <T> void fromArrayToCollection(T[] a, Collection<T> c) {
的方法怎麼能有一個通用的返回類型,是無效的?
尖括號中的T不是返回類型;它是該方法的類型參數。 – 2010-05-20 20:55:58
請注意,如果上述簽名中沒有,編譯器自然會期望在某處找到「class T {...}」。有些東西必須告訴編譯器,你希望有一個名爲T的*類型參數*。這就是方法。 –
2010-05-20 21:02:38