我有一个解析对象的函数。但是在两个服务中都需要此函数,并且参数具有相同的类名,但具有不同的包名。我需要的是避免重复的代码。
假设函数是:
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
类,则最好使用通用接口:
class Abc.PagingRequestType implements PagingRequestType
class Xyz.PagingRequestType implements PagingRequestType
interface PagingRequestType {
getNumberOfRecordsPerPage();
getStartAtRecordNumber();
}