簡體   English   中英

通用方法 - 語法混淆

[英]Generic method - syntax confusion

我正在閱讀有關通用方法的內容 我已經研究過,如果你沒有在類級別聲明類型並使用泛型方法,語法將會以某種方式像這樣

public <T> void makeArrayList(T t)

在這里我可以得出以下結論,如果我沒有在返回類型之前聲明占位符,它會給我編譯時錯誤。 我很困惑。 我正在研究Java Generics的其他主題:通用類型僅定義為返回類型,但它似乎很混亂。 我的問題是

  1. 編譯器如何知道,集合的類型是什么?
  2. 為什么我們需要在返回類型之前聲明類型?

有人可以詳細闡述這一點嗎?

如果未將<T>放在標題中,則該函數無法知道T存在。

Oracle文檔中給出的類型推斷的簡短說明:

編譯器根據實際參數的類型為我們推斷類型參數。 它通常會推斷出使調用類型更正的最具體的類型參數。

參考文獻:
我強烈建議閱讀Java Generics FAQ ,特別是關於Java Generic Methods的部分。 關於通用方法Oracle教程也很有用,盡管不像其他參考文獻那樣廣泛。

1.編譯器如何知道,集合的類型是什么?

類型是您在每次方法調用時傳遞的任何類型。 方法聲明中沒有具體的類型; 這就是聲明泛型方法的意思。

2.為什么我們需要在return-type之前聲明類型?

因為這是聲明泛型方法的語言語法。 參見JLS§8.4.4。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM