Valor vazio como parâmetro de retorno
Eu tenho essa interface:
public interface Command<T> {
T execute(String... args);
}
funciona bem para a maioria dos usos. Mas quando tento modelar um comando que tenha apenas efeitos colaterais (por exemplo, sem valor de retorno), sou tentado a escrever:
public class SideEffectCommand implements Command<Void> {
@Override
public Void execute(String... args) {
return null; // null is fine?
}
}
Isso é um problema comum? Existem melhores práticas para modelarCommands
come sem valor de retorno?
Eu tentei com este adaptador, mas acho que isso não é ideal por vários motivos:
public abstract class VoidCommand implements Command<Void> {
@Override
public Void execute(String... args) {
execute2(args);
return null;
}
public abstract void execute2(String... args);
}