【发布时间】:2020-05-07 05:41:25
【问题描述】:
在我的项目中,我有多个服务执行三个基本操作 - 创建、编辑和搜索。为此,我正在尝试创建一个通用服务。以下是我到目前为止的想法。
Search 方法将在运行时获取对象列表。
public interface GenericService<T> {
void update(T t);
void create(T t);
T search(List<?> t);
}
另外,我创建了一个抽象类,所有服务的公共代码都将放置在其中。
public abstract class AbstractService<T> implements GenericService<T> {
}
这是我的实现
public class AccountService extends AbstractService<Account> implements GenericService<Account> {
@Override
public void update(Account account) { }
@Override
public void create(Account account) { }
@Override
public Account search(List<SearchCriteria> t) { return null; }
}
这是我的 Account 和 SearchCriteria 类
public class Account {
private String accountNumber;
private Date openingDate;
// more fields
// getter setter removed for brevity
}
搜索条件类
public class SearchCriteria {
private String key;
private String value;
// getter setter removed for brevity
}
问题:在线公众号搜索(List t) { return null; },得到编译错误说
'搜索(列表)'在 'com.test.AccountService' 与 “com.test.GenericService”中的“搜索(列表)”; 两种方法都有相同的擦除,但都没有覆盖另一个
【问题讨论】:
-
将界面中
search中的List<?>改为List<T>。 -
@Schred - 我也试过了 - 它给出了以下编译错误:'com.optidesk.core.service.test.AccountService' 中的'search(List
)' 与'search (List )' in 'com.optidesk.core.service.test.GenericService';两种方法都有相同的擦除,但都没有覆盖另一个 -
你的搜索方法真的可以列出任何东西吗,你不能在你的接口定义中使用 SearchCriteria 吗?
-
是的,它可以列出任何东西。我真的需要了解为什么当前实现编译失败