java - 如何检测类是否可注入(inject)

标签 java reflection

我正在使用 Java Reflection 来初始化不同类型的对象。所有这些对象都以相同的方式构造(即,我传递相同的值来构造它们)。

因此,我的注入(inject)器查看每个字段,并执行一个长 if/else 语句,如下所示:

if (Foo.class.isAssignableFrom(field.getType())
   return new Foo(values);
else if (Bar.class.isAssignableFrom(field.getType())
   return new Bar(values);
else if...//Continue over and over

我无法定义一个要求类具有工厂的接口(interface),因为工厂本质上是静态的。扩展抽象类也是如此。

有什么方法可以删除上面的 if/else 语句,以便我的注入(inject)类不知道需要注入(inject)的类(除了它可以用 values 构造的事实之外)?

最佳答案

根据要求:

你看过Spring源代码吗?这个问题已经被现有的开源项目解决了,您只需 fork 代码并重新使用它即可。

关于java - 如何检测类是否可注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22384663/

相关文章:

java - 我如何强制方法的实现在 Java 中的 try-catch block 中?

c# - 我如何反射(reflect)动态对象的成员?

java - 在 Spring Boot 中动态加载 Spring Bean 和组件

java - 如何重构 switch 语句的重复代码片段

java - 乘法/移位优化是否应该在 Java 字节码中可见

javax.persistence 注释缺少可选元素?

java - 警告开发人员在 java 中调用 `super.foo()`

c# - 为什么我不能通过字符串调用这个方法?

.NET:获取从特定类派生的所有类

使用 FileWriter 进行 Java UTF-8 编码