簡體   English   中英

Java方法簽名中返回類型的extends關鍵字

[英]extends keyword in return type in java method signature

我正在瀏覽下代碼

我發現很多與此類似的方法簽名:

public <CMD extends Command<K, V, C>> CMD getCommand(String commandID)

此簽名與以下內容有何不同?

public Command getCommand(String commandID)

我能理解的唯一邏輯原因是進行類型檢查。 但我仍然無法從設計角度弄清楚這樣做的原因。

還有其他原因為什么要使用Java方法的返回類型並對其進行擴展

區別是三倍:

  1. 返回的類型是鍵入的 (不是原始類型)
  2. 返回的類型可以是特定的子類
  3. 該方法可以訪問類型K,V和C

作為一種類型化方法,java可以推斷出類型

所有這些都意味着它將編譯(不強制轉換):

Command<String, Integer, String> x = getCommand(commandID);

要么

SomeTypedSubClassOfCommand x = getCommand(commandID);

編譯器將基於將結果分配給變量的類型來推斷(即找出)方法的類型。

此外,您可以使用以下語法顯式指定一個子類:

Command<String, Integer, String> x = ContainingClass.<CommandSubClass<String, Integer, String>>getCommand(commandID);

暫無
暫無

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

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