我有一个 AbstractBaseRepository。我所有的存储库都从这个类扩展。我创建了另一个类 RepositoryFactory 来创建 Repository 的任何实例。由于静态方法的早期绑定,我面临问题。
public abstract class AbstractBaseRepository {
public static <T extends AbstractBaseRepository> T getNewInstance(EntityManagerFactory entityManagerFactory) {
throw new RuntimeException("Override and provide valid initialization");
}
...
}
public class RepositoryFactory {
public static <T extends AbstractBaseRepository> T getRepository(Class<T> cls) {
return T.getNewInstance(entityManagerFactory);
}
...
}
一个示例子类
public class DeviceModelRepo extends AbstractBaseRepository {
public static DeviceModelRepo getNewInstance(EntityManagerFactory entityManagerFactory) {
return new DeviceModelRepo(entityManagerFactory);
}
...
}
每当我使用 AbstractBaseRepository 的有效子类调用 getRepository() 时,都会引发运行时异常。这是由于静态方法的早期绑定造成的。在编译时, getNewInstance 与 AbstractBaseRepository 绑定,而不是在运行时与类的实际类型绑定。有什么好的解决办法吗?
茅侃侃
撒科打诨
相关分类