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

Erro ao chamar método void de dentro de outro método void

Boa tarde! Eu fui dar uma incrementada na classe Data criando um método para mostrar a data, porém criando com void, gerou um erro na classe Funcionário que usou ele, dizendo que não era possível usar método void ali, diante disso mudei meu método da classe java como abaixo. Deu certo, mas ficou a dúvida se é boa prática usar String como retorno.

String mostraData() {
        String data = this.dia+"/"+this.mes+"/"+this.ano;
        return data;
    }

O método que usou o mostraData abaixo:

void mostraFuncionario(){
        System.out.println("Nome: "+this.nomeFuncionario);
        System.out.println("Departamento: "+this.departamentoFuncionario);
        System.out.println("salario: "+this.salario);
        System.out.println("Data de admissao: "+dataEntrada.mostraData());
        System.out.println("R.G.: "+this.rg);
        System.out.println("Salario Anual: "+this.salarioAnual);

    }

E também gostaria de saber o porquê do método mostraFuncionario não aceitou o mostraData como void? Me pareceu sadio fazer isso na hora rs :D

5 respostas

Poderia mostra pra a gente o método que deu o erro?

Foi algo como isso?

void String mostraData() {
        String data = this.dia+"/"+this.mes+"/"+this.ano;
    }

Aguardo sua resposta.

Foi isso mesmo que havia feito Ian Pedro.

solução!

Entendo, deixa eu esclarecer:

O void é uma palavra chave no Java que significa que seu método não vai retornar nada, é um método que só manipula algo por exemplo.

 void aplicaBonusSalarial(double salario) {
    salario * 20/100
}

Agora se você coloca um tipo de variável na assinatura, isto é, na declaração do seu método, este tem que retornar um valor que corresponde ao tipo da variável que você usou. Um exemplo:

 boolean podeSacar(double valorDoSaque) {
    if (saldoDaConta >= valorDoSaque) return true;
    else return false;
}

No método aplicaBonusSalarial tenho um tipo void que manipula um salario, no podeSacar eu faço um verificação e retorno um true ou false para a operação.

Lembrando que o método não pode ter ambos void e um tipo de variável na sua assinatura, se não não compila. Por isso você obteve o erro.

Espero que tenha solucionado sua dúvida.

Bom dia Bruno!

Respondendo a sua pergunta, retornar uma String não é sinônimo de má pratica, mas isso depende muito do que você quer fazer com o retorno.

No seu caso pelo contexto que percebi, seria muito melhor retornar mesmo uma String, porque caso você queira guardar isso em uma variável é perfeitamente possível.

Geralmente usamos um metodo void para modificar um objeto.

ex:

public void setNome(String novoNome){
        this.nome = novoNome;
}

note que modificamos um objeto.

Agora, caso você queira obter uma informação do método, aí você deve usar algum tipo de retorno diferente de void

ex.

public String getNome(){
    return this.nome;
}

Lembrando que o tipo de retorno pode ser outro como int, double, float, Date, List ou até mesmo um objeto do seu sistema.

Espero ter esclarecido um pouco.

Obrigado Ian Pedro novamente.

Ramires essa era a outra dúvida, então eu posso usar tranquilo o retorno com uma String. Como não estava muito habituado nem com java nem com orientação a objetos causou um pouquinho de dúvidas.