将方法转换为泛型方法以避免重复代码



我需要以下方面的帮助:我对一个方法进行了多次调用,如下所示:

private void saveA(myObjA myObj, List<A> myList) {
if (myList != null && !myList.isEmpty()) {
myObj.saveAll(myList);
}
}
private void saveB(myObjB myObj, List<B> myList) {
if (myList != null && !myList.isEmpty()) {
myObj.saveAll(myList);
}
}
...

接口示例:

public interface myObjA
extends JpaRepository<A, Long> {
}
public interface myObjB
extends JpaRepository<B, Long> {
}
...

问题是,我正在为所有其他调用(myObjB、myListB、myObjC、myListC(创建一个新的调用。myObj实际上是一个接口,第二个参数总是某个对象的列表。是否有任何方法可以将此方法转换为单个方法并在调用中指定对象类型?

这可以使用通用方法来完成:

public <T, N> void save(JpaRepository<T, N> repo, List<T> list) {
if (null != list && !list.isEmpty()) {
repo.saveAll(list);
}
}
// usage
@Autowired
private MyRepo repository;  // MyRepo implements JpaRepository<MyObj, Long>
public void foo(List<MyObj> list) {
save(repository, list);
}

最新更新