Valor nulo como parámetro de retorno

Tengo esta interfaz:

public interface Command<T> {
    T execute(String... args);
}

Funciona bien para la mayoría de los usos. Pero cuando intento modelar un comando que solo tiene efectos secundarios (por ejemplo, sin valor de retorno), estoy tentado a escribir:

public class SideEffectCommand implements Command<Void> {

    @Override
    public Void execute(String... args) {
        return null; // null is fine?
    }
} 

¿Es este un problema común? ¿Hay mejores prácticas para modelarCommands cony sin valor de retorno?

He intentado con este adaptador, pero creo que esto no es óptimo por varias razones:

public abstract class VoidCommand implements Command<Void> {

    @Override
    public Void execute(String... args) {
       execute2(args);
       return null;
    }

    public abstract void execute2(String... args);
}

Respuestas a la pregunta(8)

Su respuesta a la pregunta