Na NotaFiscalBuilder. No método naData() ter como parâmetro um Calendar não gera mais complexidade na hora de utilizar o Builder? Seria melhor o parâmetro ser do tipo String e no corpo do método fazer a conversão para Calendar?
public class TesteDaNotaFiscal {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
c.set(1972, 6, 28);
NotaFiscalBuilder builder = new NotaFiscalBuilder();
builder.paraEmpresa("Caelum Ensino e Inovação")
.comCnpj("12.345.678/0001-12")
.comItem(new ItemDaNota("Item 1", 200.0))
.comItem(new ItemDaNota("Item 2", 300.0))
.comItem(new ItemDaNota("Item 1", 400.0))
.comObservacoes("observacoes").naData(c);
NotaFiscal nf = builder.constroi();
System.out.println(nf.getValorBruto());
}
}