注入未知类型的 Bean 时出现"Capture of ?"错误



我必须注入一个未知类型的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提出了错误";捕获"在";插入(信息(";。我试了很多方法想弄清楚,但都没有得到答案。有人能帮忙吗?

编译器抱怨的原因是它无法确认操作的类型安全性。由于使用了通配符,编译器无法知道应该为insert方法提供什么参数类型。

作为一种可能的解决方案,可以尝试在调用其方法之前将testService强制转换为适当类型的对象。例如,

TestService<Info> castedTestService = (TestService<Info>) testService;
Info info = new Info();
castedTestService.insert(info);

相关内容

最新更新