我有一个解析对象的函数。但是在两个服务中都需要此函数,并且参数具有相同的类名,但具有不同的包名。我需要的是避免重复的代码。

假设函数是:

    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();
}

10-07 16:20