繁体   English   中英

如何使用 Java Spring 中的工厂设计模式初始化泛型类型?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM