Existe algum problema em reescrever o construtor sem parâmetros de forma que se ele for chamado ele já providencia que o atributo outro seja null, por exemplo:
public class IGF extends Imposto {
private static final String VALOR_IGF = "0.45";
public IGF(Imposto outro) {
super(outro);
}
public IGF() {
super(null);
}
@Override
protected BigDecimal realizarCalculo(Orcamento orcamento) {
return orcamento.getValor().multiply(new BigDecimal(VALOR_IGF));
}
}
Dessa forma eu poderia fazer a chamada sem ter que por null no parâmetro.
public class App {
public static void main(String[] args) {
Orcamento orcamento = new Orcamento(new BigDecimal("100"), 5);
CalculadoraDeImposto calculadoraDeImposto = new CalculadoraDeImposto();
System.out.println(calculadoraDeImposto.calcular(orcamento, new ICMS(new ISS(new IGF()))));
}
}