Пустое значение в качестве возвращаемого параметра

У меня есть этот интерфейс:

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

это прекрасно работает для большинства применений. Но когда я пытаюсь смоделировать команду, которая имеет только побочные эффекты (например, без возвращаемого значения), у меня возникает желание написать:

public class SideEffectCommand implements Command<Void> {

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

Это общая проблема? Есть ли лучшие практики для моделированияCommands сand без возвращаемого значения?

Я пробовал использовать этот адаптер, но я думаю, что это не оптимально по нескольким причинам:

public abstract class VoidCommand implements Command<Void> {

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

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

Ответы на вопрос(8)

Ваш ответ на вопрос