使用Java 7选择基于参数的返回类类型

Ant*_*edo 2 java java-7

我正在寻找是否可以在Java 7中实现这一点:

现在,我在几个服务中都有这样的函数,第三个参数在每个服务中都是不同的:

final RequestDTO1 requestDTO = (RequestDTO1) getDTO(param, RequestDTO1.class);

final RequestDTO2 requestDTO = (RequestDTO2) getDTO(param, RequestDTO2.class);

final RequestDTO3 requestDTO = (RequestDTO3) getDTO(param, RequestDTO3.class);
Run Code Online (Sandbox Code Playgroud)

这是getDTO签名:

protected Object getMessage(Object param, Class clazz);
Run Code Online (Sandbox Code Playgroud)

有一些方法可以指示getDTO函数我想要返回第三个参数指示的类的对象而不使用转换吗?

final RequestDTO1 requestDTO = getDTO(param, RequestDTO1.class);

final RequestDTO2 requestDTO = getDTO(param, RequestDTO2.class);

final RequestDTO3 requestDTO = getDTO(param, RequestDTO3.class);
Run Code Online (Sandbox Code Playgroud)

Xav*_*ica 6

您可以指定方法是通用的(请注意,这与类生成无关 - 它是在方法级别完成的),并返回如下的泛型类型:

protected <T> T getMessage(Object param, Class<T> clazz);
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅Java Tutorial中的Generic methods部分.