Java泛型投射

时间:2014-08-05 06:32:59

标签: java generics

如何按照通用铸造方式工作?

private <T, N> N send(final T request) {
    final String serviceUrl = "someUri"

    try {
        return (N) webServiceTemplate.marshalSendAndReceive(serviceUrl, request);
    } catch (final SoapFaultClientException e) {

    }
}

当我这样称呼私人方法时:

MyReq request = new  MyReq();
MyResp response = send(req);

此方法如何将此对象转换为MyResp对象? 返回类型的含义是什么意思:

  

&LT; T,N&gt;

4 个答案:

答案 0 :(得分:1)

  

&LT; T,N&gt;

不是退货类型。 N是。

private <T, N> N send(final T request)
               ↑

你有&#34;选择&#34;通过传递MyReq参数键入T.在返回marshalSendAndReceive的值之前,它被转换为N类型。在你的情况下MyResp。

<T,N> 

只声明此类/方法是通用的,您可以指定通用输入类型以及输出。

答案 1 :(得分:0)

该方法使用通用参数TN进行参数化。它接受类型为T的参数,并返回类型为N的引用。

返回类型不是<T,N>,只是N

答案 2 :(得分:0)

这是关于在java中使用类似于C ++模板的模板;

示例:

void add(T x, T y){
System.out.println(x+y);
}

可以使用以下任一方法调用上述函数...

add(3.0f, 4.5f);
add(2,3);

意思是,该函数适用于任何类型的参数

答案 3 :(得分:0)

此处T and N是通用参数。

此处的返回类型为N而不是<T,N>.

Read more...