Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Como retornar 2 tipos em um metodo?

Olá.. faz muito tempo q n mexo com back-end, e a primeira coisa q estranhei...

Não consigo retornar 2 tipos valores:

public double saca(double valorASerSacado) {
        return (this.saldo >= valorASerSacado) ? this.saldo -= valorASerSacado : "voce n tem saldo suficiente";
    }

Ok, sei que n vai retornar pq o tipo de retorno deve ser double.

mas como faco isso funcionar no back? é possivel? retornar um tipo OU outro?, algo como:

public double || String saca(double valorASerSacado){}

da pra fazer com String, mas gostaria de saber se consigo retornar 2 tipos em um metodo no Java.

3 respostas
solução

Não conseguimos, podemos apenas tipo de retorno por método mesmo Nicolas

Hmmm ok vlws, muito legal... apesar de n tem a liberdade do front, vc aprende outros meios de se fazer determinada coisa ;), gostando muito.

Olá, Nikolas! Por boas práticas, um método deve ter apenas uma função; se ele faz mais de uma coisa, alguma coisa tá errada. Mas você verá isso mais para a frente, já que ainda está vendo 'Java Parte 2'. Não sei como você pretendo utilizar o retorno do método para quem o está chamando, já que deseja retornar dois 'tipos', mas dar pra brincar um pouco. Se você quer o escopo do seu método desse jeito que você escreveu, você muda o retorno para algo mais genérico; e depois faz conversão onde o método for chamado, exemplo:

public Object saca(double valorASerSacado) {
        return (this.saldo >= valorASerSacado) ? this.saldo -= valorASerSacado : "voce n tem saldo suficiente";
    }

E quem tá chamando poderia fazer algo assim:

Conta conta = new Conta();

conta.setSaldo(10);

Double valorDouble;
String valorString;

//imprimindo o valorDouble
if(conta.saca(5).toString().length() < 4){
    valorDoubleDouble.parseDouble(conta.saca(5).toString());
    System.out.println(valorDouble);
}else{
    valorString = conta.saca(5).toString();
    System.out.println(valorString);
}

//imprimindo o valorString
if(conta.saca(15).toString().length() < 4){
    valorDoubleDouble.parseDouble(conta.saca(5).toString());
    System.out.println(valorDouble);
}else{
    valorString = conta.saca(15).toString();
    System.out.println(valorString);
}

Ou mudando o escopo e retorno do seu método, que é o que eu aconselho, poderia ficar assim:

public String saca(double valor){
    if(this.saldo < valor){
        this.saldo -= valor;
        return "Saldo insuficiente! ";
    }else{
        return "Saque realizado com sucesso!";
    }
}

Espero ter ajudado!