Java泛型方法签名解释

时间:2014-02-18 12:36:04

标签: java generics

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

public <S, D> D map(S sourceObject, java.lang.Class<D> destinationClass);

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

我不能写

public D map(S sourceObject, java.lang.Class<D> destinationClass);

3 个答案:

答案 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类型的参数和DClass<D>)的类。并返回类型D的值 - 独立于其他类型。