gpt4 book ai didi

Java - 重构类似方法的代码

转载 作者:行者123 更新时间:2023-11-29 08:01:36 27 4
gpt4 key购买 nike

我有以下问题:

我有一些方法基本上用于从 Salesforce 获取一些东西。

这是一个例子:

 public Map<String, Customer> findSomethingByIds(String[] somethingIds) throws... {
return binding.findSomethingByIds(somethingIds);
}

出于多种原因,我需要在极少数情况下(例如 session 过期等)重试此方法的执行,因此我使用了 this .

所以现在我有这样的东西:

 public Map<String, Something> findSomethingByIds(final String[] somethingIds) throws ... {       
Map<String, Something> myList = null;
Callable<Map<String, Something>> task = new Callable<Map<String, Something>>() {
@Override
public Map<String, Something> call() throws Exception {
return binding.findSomethingByIds(somethingIds);
}
};

RetriableTask<Map<String, Something>> r = new RetriableTask<>(2, 1000, task);
try {
myList = r.call();
} catch (Exception e) {
// Ex. handling
}
return myList;
}

现在,我的代码中有很多这样的方法,所以如果我想使用 RetriableTask 接口(interface),我必须向这些方法添加很多代码,类似于上面的那个,我想完全避免费用。所有这些方法几乎都会返回不同的东西,所以我不能在这里使用工厂(或者我不知道如何使用)。有谁知道这个的任何解决方案?任何帮助将不胜感激。

最佳答案

如果你有一个方法做类似的事情,唯一的区别是返回类型,尝试使用 generics :

public Map<String, T> findSomethingByIds(final String[] somethingIds) throws ... {       

}

这将允许您对不同的对象类型执行等效处理,而无需在各处复制和粘贴代码。

回复评论,如果他们取不同的参数类型,你仍然可以在参数中使用泛型。如果您的意思是它们具有不同的数量参数(即具有完全不同的签名),那么您可以创建包装器方法来执行该对象类型独有的处理,然后您可以将控制权传递给所有对象类型通用的处理通用方法。

关于Java - 重构类似方法的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14056079/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com