【发布时间】:2017-03-31 07:46:21
【问题描述】:
我有一个解析对象的函数。但是这个函数在两个服务中是必需的,并且参数具有相同的类名,但不同的包名。我需要的是避免重复代码。
假设函数为:
private HashMap<String, Integer> getPagination(PagingRequestType pagingRequestType) {
int pageSize = 200;
int pageNumber = 1;
if(pagingRequestType != null) {
if (pagingRequestType.getNumberOfRecordsPerPage() != 0) {
pageSize = pagingRequestType.getNumberOfRecordsPerPage();
}
if (pagingRequestType.getStartAtRecordNumber() != 0) {
pageNumber = pagingRequestType.getStartAtRecordNumber();
}
}
HashMap<String, Integer> result = new HashMap<>();
result.put("pageNumber", pageNumber);
result.put("pageSize", pageSize);
return result;
}
可能的函数调用:
- getPagination(new Abc.PagingRequestType());
- getPagination(new Xyz.PagingRequestType());
PagingRequestType 是两个不同包中的自动生成类。该功能需要实现一次并在两个服务中使用。
谢谢。
【问题讨论】:
-
等等,你有两个不同的类叫做
PagingRequestType吗?这只是尖叫要修复,特别是如果使用相同的两个实现。 -
显而易见的答案是不要在两个地方自动生成
PagingRequestType。 -
或者,如果无法避免,让两个 PagingRequestType 类实现一个通用接口,然后可以在此方法中使用该接口。
-
是的,这不是因为类有相同的名称,你可以在上面做一些通用的东西。
-
有两个不同的 WSDL 文件来支持旧系统。
标签: java generic-programming code-reuse