这种通用方法签名意味着什么
public <S, D> D map(S sourceObject, java.lang.Class<D> destinationClass);
我指的是<S, D>
此方法返回在第二个参数中发送的相同类型的对象。
我不能写
public D map(S sourceObject, java.lang.Class<D> destinationClass);
答案 0 :(得分:12)
这意味着此方法调用需要两个类型参数:S和D.
<S, D>
部分是指这种方法是通用的声明,它采用两个类型参数,然后用作方法签名中实际类型的占位符。
当您调用该方法时,要么提供参数,要么从您作为参数传递的表达式的类型中推断出它们,如下所示:
String val = map(10, String.class);
在这种情况下,S为Integer
,D为String
答案 1 :(得分:2)
我猜纠正后仍然有错误(或者你应该向我们展示全班,如果它还包含类型参数),但我想我理解你的问题;正如评论中已经说明的那样,您可以简单地删除S
类型参数,因为它仅在方法签名中使用一次并将其替换为Object
。减少的变体将如下所示:
public <D> D map(Object sourceObject, java.lang.Class<D> destinationClass);
答案 2 :(得分:0)
<S, D>
表示该方法是通用的(独立于类)。获取S
类型的参数和D
(Class<D>
)的类。并返回类型D
的值 - 独立于其他类型。