[英]How to initialize generic type using Factory Design Pattern in Java Spring?
我需要初始化 class 的泛型类型,但我做不到。 就我所做的研究而言,工厂设计模式更好地进行这种泛型类型初始化,但我不知道如何。
这是我的通用服务;
@Service
public abstract class GaService<Entity extends Ga<? extends Play>, DTO extends GaDTO<? extends PlayDTO>> {
@Autowired
protected GaRepository<Entity> repository;
@Autowired
protected Mapper<Entity, DTO> mapper;
public DTO initialize(){
Entity entity = new Entity();
repository.save(entity);
return mapper.toDTO(entity);
}
当您注意到我的new Entity()
出现错误时,为了实现这一点,我需要找到一种方法来初始化 Entity。 我怎样才能做到这一点?
我在这里看到两个选项:
第一个选项:定义要在具体类中实现的抽象工厂方法:
protected abstract Entity newEntity();
第二种选择:将 class 传递给initialize
方法:
public DTO initialize(Class<Entity> entityClass){
Entity entity = entityClass.newInstance();
repository.save(entity);
return mapper.toDTO(entity);
}
更新:第三个选项:向Supplier
传递initialize
方法:
public DTO initialize(Supplier<Entity> newEntity){
Entity entity = newEntity.get();
repository.save(entity);
return mapper.toDTO(entity);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.