[英]Java generics method signature explanation
這種通用方法簽名意味着什么
public <S, D> D map(S sourceObject, java.lang.Class<D> destinationClass);
我指的是<S, D>
。
此方法返回在第二個參數中發送的相同類型的對象。
我不能寫
public D map(S sourceObject, java.lang.Class<D> destinationClass);
這意味着此方法調用需要兩個類型參數:S和D.
<S, D>
部分是指這種方法是通用的聲明,它采用兩個類型參數,然后用作方法簽名中實際類型的占位符。
當您調用該方法時,要么提供參數,要么從您作為參數傳遞的表達式的類型中推斷出這些參數,如下所示:
String val = map(10, String.class);
在這種情況下,S是Integer
,D是String
我猜糾正后仍然有錯誤(或者你應該向我們展示全班,如果它還包含類型參數),但我想我理解你的問題; 正如在注釋中已經說明的那樣,你可以簡單地去掉S
類型參數,因為它只在方法簽名中使用一次並用Object
替換它。 減少的變體將如下所示:
public <D> D map(Object sourceObject, java.lang.Class<D> destinationClass);
<S, D>
表示該方法是通用的(獨立於類)。 獲取類型S
參數和D
Class<D>
( Class<D>
)。 並返回D
類型的值 - 獨立於其他類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.