2015-06-11 36 views
6

我似乎無法完全理解以下語句。困惑以下'泛型'代碼

<T> T[] toArray(T[] a);

雖然,據我所知,上述聲明是應該可以接受並返回T類型對象的數組...函數的聲明,我不明白爲什麼

1 - 兩個T的不包圍<>

2 - 似乎有2種返回類型,如<T> & T[]

回答

6

<T>不是返回類型。它是該方法使用的泛型類型參數的聲明。一旦聲明,它可以用於沒有<>的方法簽名;

+2

而且它與'包圍<>',因爲這是它的格式是如何定義的。 – biziclop

+0

那麼我可以在沒有第一個''的情況下寫下相同的聲明,然後用'<>'來簡單地包圍其他2個'T'?例如,我可以用' [] toArray( [] a)'來聲明上面的內容;​​'而不是? – Grateful

+0

@Grateful不,這不是正確的Java語法。如果該方法是聲明通用參數T('public class SomeClass ')的類的一部分,則可以從方法聲明中省略'',但其他兩個T將保持不變。 – Eran

0

返回類型爲T[]而不是<T>。什麼表示該方法是一個泛型類型,並且實現應相應地處理該類型。

兩個T不包圍在內<>是輸入參數類型和返回類型。在這種情況下,兩者應該是相同的。

1
  1. 聲明該方法由T參數化,而不是例如包含的類。尖括號是語法,而不是變量名

  2. 如圖1的一部分,不是返回類型