es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

void con Genéricos en Java

Tengo una función que devuelve void.

public interface IProductService {
    void delete(String id);
}

Método genérico.

public interface IRequestHandler<c, r=""> {
    R handler(C c);
    Class<c> commandType();
}

Implementación de la interfaz genérica.

@Singleton
public record DeleteProductCommandHandler(IProductService iProductService)
            implements IRequestHandler<deleteproductcommand, void=""> {


    @Override
    public Void handler(DeleteProductCommand deleteProductCommand) {
        return iProductService.delete(deleteProductCommand.id);
    }

    @Override
    public Class<deleteproductcommand> commandType() {
        return DeleteProductCommand.class;
    }
}

¿Cómo puedo utilizar void en IRequestHandler<deleteproductcommand, void=""> para poder mapear void desde iProductService.delete(deleteProductCommand.id);?</deleteproductcommand,></deleteproductcommand,></c,>

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    En la implementación IRequestHandler<deleteproductcommand, void="">, puedes simplemente retornar null desde el método handler para mapear el tipo de retorno void de iProductService.delete(deleteProductCommand.id) al parámetro de tipo genérico Void.

    Así que la implementación se vería así:

    @Singleton
    public record DeleteProductCommandHandler(IProductService iProductService)
            implements IRequestHandler<deleteproductcommand, void=""> {
    
    
        @Override
        public Void handler(DeleteProductCommand deleteProductCommand) {
            iProductService.delete(deleteProductCommand.id);
            return null; // Mapeando void al parámetro de tipo genérico Void
        }
    
        @Override
        public Class<deleteproductcommand> commandType() {
            return DeleteProductCommand.class;
        }
    }
    

    Al retornar null, estás indicando que el método no está retornando ningún valor, lo cual es equivalente a void.</deleteproductcommand,></deleteproductcommand,>

Comments are closed.