Spring getBean 与类型验证

标签 spring generics casting

我正在使用方法ApplicationContext.getBean(String name, Class requiredType)。该 bean 的类型为 util:set。我的代码如下所示:

Set<String> mySet = context.getBean("myBean", Set.class);

我想知道如何做这样的事情来避免类型转换警告:

Set<String> mySet = context.getBean("myBean", Set<String>.class);

我不确定是否可以通过这种方式定义类的类型。我是在做梦还是有办法做到这一点?

谢谢。

最佳答案

并非如此,但有一个运行时解决方法至少可以消除对 @SuppressWarnings 的需要。您可以使您的类抽象并让 Spring 检测您的代码:

public abstract class Test {
  Set<String> getMyBean();
}

然后注入(inject)lookup method在您的 XML 配置中:

<bean class="Test">
  <lookup-method name="myBean" bean="myBean" />
</bean>

它并不是真正静态检查的,但它在运行时会快速失败,并且您可以将丑陋的转换排除在代码之外。

关于Spring getBean 与类型验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33689558/

相关文章:

java - spring 3、hibernate 3、maven 和 mysql 的集成

java - 流中收集器中的比较器导致类型推断问题?

java - 如何在java中一个接一个地遍历两个不同类型的泛型列表?

c# - 检索关闭泛型类型的泛型类型的未封闭类型

swift - 你能在 Swift 中重载类型转换运算符吗?

c++ - 您可以将带符号的字符数组转换为无符号整数吗?

spring - 在 Spring MVC Web 应用程序中从 Amazon S3 服务下载上传的文件

java - 将页面添加到 Spring Boot 应用程序(极其基本)

java - 如何避免在 ehcache 中定义不需要的缓存

c# - 如何在 C# 中将类型为 `object` 的变量转换为具有泛型类型的类?