我正在开发一个具有多个 SFSB 的应用程序,它们都实现了相同的接口。
为了在运行时决定使用哪个具体实现,我有以下工厂方法:
@SuppressWarnings("rawtypes")
@Inject @Any Instance<SFSBInterface> sfsbSource;
public <T> SFSBInterface<T> initBeanForm(Class<T> clazz, Class<? extends SFSBInterface<T>> sfsbClass, Annotation... qualifiers) {
SFSBInterface<T> sfsb = sfsbSource.select(sfsbClass, qualifiers).get();
return sfsb;
}
每个具体的实现都实现了一个@Remove 注释方法。现在我有一个案例,我想删除这个 sfsb 并在调用这个方法时获得一个新的实例。
我正在调用 remove 方法并删除对该对象的所有引用,但该实例一直在内存中。当我现在请求这个类的一个实例时,我得到了相同的实例,我之前为此调用了 remove。
我的问题是:
- 如果我使用我调用 remove 方法的这个实例,我会遇到问题吗?
- 删除的实例保留在内存中是否正常?
- 我怎样才能有效地删除这个实例?
- 我怎样才能获得我的班级的一个真正的新实例?
亲切的问候克里斯蒂安
顺便说一句:我正在使用 JBoss 7.1.1 和 Weld