Java泛型参数方法避免代码重复

标签 java generic-programming code-reuse

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

假设函数是:

    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 类,那么使用通用接口(interface)将是一个好主意:

class Abc.PagingRequestType implements PagingRequestType
class Xyz.PagingRequestType implements PagingRequestType

interface PagingRequestType {
    getNumberOfRecordsPerPage();
    getStartAtRecordNumber();
}

关于Java泛型参数方法避免代码重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43135289/

相关文章:

java - -bash : syntax error near unexpected token `('

java - 使用二进制搜索实现 floored 平方根

generic-programming - 如何在 Nim 模板中获取 expr 的字符串表示形式

c - 为什么我在下面的程序中针对指针而不是数组出现段错误?

xml - 有没有办法从 XML 模式中删除魔数(Magic Number)?

sql-server - 错误: "INSERT EXEC statement cannot be nested." and "Cannot use the ROLLBACK statement within an INSERT-EXEC statement." How to solve this?

java - 如何在Arraylist上正确添加Google Map上的添加标记

haskell - 使用 Typeable 在运行时部分应用函数(任何类型匹配的时间)

vb.net - 如何使控件可在不同项目中重复使用?

java - 如何使用二进制搜索从已排序的 TreeSet 中检索元素?