Java 如何检测类是否可注入

Java 如何检测类是否可注入,java,reflection,Java,Reflection,我使用Java反射来初始化不同类型的对象。所有这些对象都以相同的方式构造(即,我传入相同的值来构造它们) 因此,我的注入器查看每个字段,并执行一个长的if/else语句,如下所示: if (Foo.class.isAssignableFrom(field.getType()) return new Foo(values); else if (Bar.class.isAssignableFrom(field.getType()) return new Bar(values); else

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

因此,我的注入器查看每个字段,并执行一个长的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
我不能定义一个要求类具有工厂的接口,因为工厂本质上是静态的。扩展抽象类也是如此

是否有某种方法可以删除上面的if/else语句,这样我的注入类就不知道需要注入的类了(除了它可以用
值构建的事实之外?

使用类似(未测试)的东西:

其中valueTypes是值的类型。

根据要求:


您看过Spring源代码了吗?这是一个已经由现有开源项目解决的问题,您可以将代码分叉并重新使用。

您看过Spring源代码了吗?这是一个已经由现有开源项目解决的问题,您可以将代码分叉并重新使用。Yes、 实际上我用的是Spring。我从来没有想过在这种情况下使用它。这就是我想要的。发布一个答案,我会在@mttdbd接受它
private <T> T newInstance(Class<T> type){
    Constructor<T> constructor = type.getConstructor(valueTypes);
    return constructor.newInstance(values)
}
Object obj = newInstance(field.getType());