java我们可以使用泛型优化下面的代码吗
我有一个服务类,它对另一个API进行两个不同的调用,该API返回两个不同的响应对象。为了简单起见,让它如下所示
public class Service {
public AddResponseWrapper add(Request request) {
final AddResponseWrapper addResponseWrapper = new AddResponseWrapper();
try {
final AddResponse addResponse = addApi.add(request);
addResponseWrapper.setAddResponse(addResponse);
} catch (final Exception e) {
addResponseWrapper.setErrorDetails(convert(e));
}
return addResponseWrapper;
}
public DeleteResponseWrapper delete(Request request) {
final DeleteResponseWrapper deleteResponseWrapper = new DeleteResponseWrapper();
try {
final DeleteResponse deleteResponse = deleteApi.delete(request);
deleteResponseWrapper.setDeleteResponse(deleteResponse);
} catch (final Exception e) {
deleteResponseWrapper.setErrorDetails(convert(e));
}
return deleteResponseWrapper;
}
}
类似地,我在下面创建了两个POJO
public class AddResponseWrapper {
private AddResponse addResponse;
private ErrorDetails errorDetails;
public AddResponse getAddResponse() {
return addResponse;
}
public void setAddResponse(final AddResponse addResponse) {
this.addResponse = addResponse;
}
public ErrorDetails getErrorDetails() {
return errorDetails;
}
public void setErrorDetails(final ErrorDetails errorDetails) {
this.errorDetails = errorDetails;
}
}
public class DeleteResponseWrapper {
private DeleteResponse deleteResponse;
private ErrorDetails errorDetails;
public DeleteResponse getDeleteResponse() {
return deleteResponse;
}
public void setDeleteResponse(final DeleteResponse deleteResponse) {
this.deleteResponse = deleteResponse;
}
public ErrorDetails getErrorDetails() {
return errorDetails;
}
public void setErrorDetails(final ErrorDetails errorDetails) {
this.errorDetails = errorDetails;
}
}
AddResponseWrapper&;DeleteResponseWrapper是我创建的类,而AddResponse和DeleteResponse类是我从调用的API继承的类
现在如果我再调用两个APi,比如减法&;在乘法操作中,我必须再创建两个POJO类SubtractResponseWrapper和MultiplyResponseWrapper
我觉得这个解决方案并不干净,我真正想要的是一个泛型类,应该从每个调用中返回,我可以避免使用多个Pojo类
# 1 楼答案
试试这个——但是如果你的响应对象没有某种继承权,它可能不会比
ResponseWrapper<Object>
好多少然后你的服务变成——
如果不更改API类,就无法进一步简化