我需要一个返回兼容服务的服务查找方法。这些特定服务是同一个泛型超类的(非泛型)子类,我想使用泛型来确保兼容性。
课程:
class BaseDTO
class AaaDTO extends BaseDTO
class BbbDTO extends BaseDTO
interface BaseService<T extends BaseDTO>
interface AaaService extends BaseService<AaaDTO>
interface BbbService extends BaseService<BbbDTO>
我必须将哪些泛型定义放入下面解析器类的占位符中?我想表达的是resolve()
返回一个与给定对象兼容的服务实现。
public class Resolver {
@Autowired private AaaService aaaService;
@Autowired private BbbService bbbService;
public <T ???> BaseService<???> resolve(T object) {
if (object instanceof AaaDTO) {
return (???) aaaService;
} else if (object instanceof BbbDTO) {
return (???) bbbService;
} else {
throw new IllegalArgumentException();
}
}
}
简单地说我想告诉编译器以下是安全的:
BaseDTO dto = getDtoFromSomewhereElse();
resolver.resolve(dto).foo(dto);