Durante o curso de redação das diretrizes de código para uma empresa, me vi recomendando o uso do padrão Builder do Effective Java, em vez de construtores telescópicos.
No entanto, depois de pensar um pouco mais, certamente uma solução mais elegante é apenas remover a classe do construtor e também remover os construtores extras com argumentos opcionais.
Portanto, basta ter o construtor com os parâmetros necessários, getters / setters normais e comentar o código. Ao implementar, crie uma nova instância do objeto yr e defina os valores.
Meu pensamento original era o benefício de remover a confusão sobre quais parâmetros eram opcionais e quais eram necessários; no entanto, o verdadeiro benefício vem do uso do encadeamento de métodos / interface fluente.
O padrão do construtor possui benefícios quando você cria muitas novas instâncias, pois o ide pode fazer o trabalho da perna e também se houver muitos (15+) parâmetros opcionais. No entanto, vale a pena o tempo extra codificando a classe interna estática, você recomendaria usar o construtor ou é uma perda de tempo?