Wartość pusta jako parametr powrotu

Mam ten interfejs:

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

działa dobrze dla większości zastosowań. Ale kiedy próbuję modelować polecenie, które ma tylko efekty uboczne (np. Bez wartości zwracanej), mam ochotę napisać:

public class SideEffectCommand implements Command<Void> {

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

Czy to powszechny problem? Czy istnieją najlepsze praktyki do modelowaniaCommands zi bez wartości zwracanej?

Próbowałem z tym adapterem, ale myślę, że nie jest to optymalne z kilku powodów:

public abstract class VoidCommand implements Command<Void> {

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

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

questionAnswers(8)

yourAnswerToTheQuestion