如何在 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() 出现错误,为此,我需要找到一种初始化实体的方法。我怎样才能做到这一点?

我在这里看到两个选项:

第一个选项:定义一​​个抽象工厂方法在具体classes:

中实现
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);
}