我必须注入一个类型未知的bean,定义如下:
@Bean
public TestService<?> testService() {
return new DefaultTestServiceImpl();
}
其中,上述类别的详细信息如下:
public interface TestService<T extends Info> {
void insert(T info) throws Exception;
}
public class DefaultTestServiceImpl implements TestService<Info> {
void insert(Info info) throws Exception;
}
我使用以下方法注入bean:
private final TestService<?> testService;
我尝试在我的服务中调用该方法,如下所示:
Info info = new Info();
testService.insert(info);
然而,idea建议在“插入(信息)”处出现错误“捕获”。我试了很多方法想弄明白,但都找不到答案。有人能帮忙吗?
1条答案
按热度按时间piok6c0g1#
编译器抱怨的原因是它无法确认操作的类型安全性。编译器无法知道应该为
insert
方法,因为使用了通配符。作为一种可能的解决方案,您可以尝试铸造
testService
在调用相应类型的对象的方法之前。例如