簡體   English   中英

Java泛型方法簽名解釋

[英]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.

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