Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Comando NEW dentro de um método

Olá, Criei o seguinte método que cria um novo funcionário:

    public void setNovoFuncionario(String nomeFuncionario, String departamentoFuncionario, int diaFuncionario, int mesFuncionario, int anoFuncionario, double salarioFuncionario, String rgFuncionario){
            this.nome = nomeFuncionario;
            this.departamento = departamentoFuncionario;
            this.admissao = new Data();
            this.admissao.dia = diaFuncionario;
            this.admissao.mes = mesFuncionario;
            this.admissao.ano = anoFuncionario;
            this.salario = salarioFuncionario;
            this.rg = rgFuncionario;
    }

E dentro do main:

        Funcionario f1 = new Funcionario();
        f1.setNovoFuncionario("Joao", "Contabil", 12, 01, 90, 5000, "12345678");

Esse código funciona, porém gostaria de saber se existe alguma maneira de realizar a criação do objeto (Funcionario f1 = new Funcionario();) dentro do método setNovoFuncionario, economizando uma linha de código.

Obrigado desde já!

2 respostas
solução!

Olá Arthur, tudo blz?

Bem, o que você poderia fazer é sobrescrever o construtor da classe Funcionário. Afinal, qual a maneira mais natural de criar novos objetos? Com construtores não é mesmo?

Você poderia substituir o seu método setNovoFuncionario por:

public Funcionario(String nomeFuncionario, String departamentoFuncionario, int diaFuncionario, int mesFuncionario, int anoFuncionario, double salarioFuncionario, String rgFuncionario){
            this.nome = nomeFuncionario;
            this.departamento = departamentoFuncionario;
            this.admissao = new Data();
            this.admissao.dia = diaFuncionario;
            this.admissao.mes = mesFuncionario;
            this.admissao.ano = anoFuncionario;
            this.salario = salarioFuncionario;
            this.rg = rgFuncionario;
    }

Depois é só chamar no main:

Funcionario f1 = new Funcionario("Joao", "Contabil", 12, 01, 90, 5000, "12345678");

Obrigado!