Java泛型方法签名解释

Bic*_*ick 12 java generics

这种通用方法签名意味着什么

public <S, D> D map(S sourceObject, java.lang.Class<D> destinationClass);
Run Code Online (Sandbox Code Playgroud)

我指的是<S, D>.
此方法返回在第二个参数中发送的相同类型的对象.

我不能写

public D map(S sourceObject, java.lang.Class<D> destinationClass);
Run Code Online (Sandbox Code Playgroud)

Mar*_*lis 14

这意味着此方法调用需要两个类型参数:S和D.

<S, D>部分用作声明此方法是通用的并且采用两个类型参数,然后将其用作方法签名中实际类型的占位符.

当您调用该方法时,要么提供参数,要么从您作为参数传递的表达式的类型中推断出这些参数,如下所示:

String val = map(10, String.class);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,S是Integer和D是String