借助泛型和反射的JavaDI模块

借助泛型和反射的JavaDI模块,java,reflection,dependency-injection,Java,Reflection,Dependency Injection,我想构建自己的简单di模块,为此我创建了: public interface Factory<T> { T getInstance(); } 我知道,这样的di结构可以通过反射API实现,但我不知道如何在这个示例中正确使用它。如何更改代码以通过测试?Class表示一个类,而不是一个实例。如果您想要一个实例,请调用Class.newInstance(),假设您有一个零参数构造函数。public void bind(类基,类 public class DiImpl implments

我想构建自己的简单di模块,为此我创建了:

public interface Factory<T> {
T getInstance();
}

我知道,这样的di结构可以通过反射API实现,但我不知道如何在这个示例中正确使用它。如何更改代码以通过测试?

Class
表示一个类,而不是一个实例。如果您想要一个实例,请调用
Class.newInstance()
,假设您有一个零参数构造函数。
public void bind(类基,类
public class DiImpl implments Di{

private Map<Class, Factory> map = new HashMap<>();

@Override
public <T> Factory<T> getFactory(Class<T> type) {
    return (Factory<T>) map.get(type);
}

@Override
public <T> void bind(Class<T> base, Class<? extends T> impl) {
    map.put(base, new Factory<Class<?>>() {
        @Override
        public Class getInstance() {
            return  new Class<?>.newInstance; //here should be new instance of impl class
        }
    });
}
}
interface SimpleService {
....
}

FirstVaraintService implements SimpleService {
...
}

@Test
void test(){
  Di di= new DiImpl();
  di.bind(SimpleService.class, FirstVaraintService.class);       
  Factory<SimpleService> factory = di.getFactory(SimpleService.class);
  assertSame(FirstVaraintService.class, factory.getInstance().getClass());
}
java.lang.ClassCastException: java.lang.Class cannot be cast to ... SimpleService