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

Dúvida no Ex. 3 da Aula 4 - Interfaces

Tem alguma maneira de imprimir o nome da variável ou o nome do tipo da variável apenas?

package conta;

public class GerenciadorDeImpostoDeRenda {
    private double total;

    void adiciona(Tributavel t) {
        System.out.println("Adicionando tributavel: " + t);

        this.total += t.calculaTributos();
    }

    public double getTotal() {
        return this.total;
    }

}
package conta;

public class TestaGerenciadorDeImpostoDeRend {
    public static void main(String[] args) {

        GerenciadorDeImpostoDeRenda gerenciador = new GerenciadorDeImpostoDeRenda();

        SeguroDeVida sv = new SeguroDeVida();
        gerenciador.adiciona(sv);

        ContaCorrente cc = new ContaCorrente();
        cc.deposita(1000);
        gerenciador.adiciona(cc);

        System.out.println(gerenciador.getTotal());
    }
}

Pois da maneira acima ele imprime: Adicionando tributavel: conta.SeguroDeVida@2a139a55 Adicionando tributavel: conta.ContaCorrente@15db9742 52.0

Ou seja, imprime diversas informações aleatórias, como o package, por exemplo. Sendo que eu só queria imprimir o tipo da variável , que seria ContaCorrente e SeguroDeVida, ou até mesmo o nome delas, que seria cc e sv como criado acima.

Muito Obrigado.

4 respostas

Olá João Felipe! Pelo que entendi você quer que seja impresso o nome da classe a qual o Objeto corresponde é isso?

Você pode usar o método da Classe Object getClass() que devolve a classe do Object e então você utiliza o método getSimpleName()para apenas pegar o nome da classe sem o Pacote e etc.. Ficando da seguinte forma:

System.out.println("Adicionando tributavel: " + t.getClass().getSimpleName());

Espero ter ajudado! Bons estudos!

Olá Romário,

Muito obrigado.

Essa era uma das questões, a outra seria imprimir o nome do próprio objeto. É possível eu imprimir o nome que atribuí a ele? Como no caso do meu exemplo sv e cc?

solução!

João o nome da variável não é possível, pois é uma variável local, ou seja, só existe no escopo do método. Caso a variável fosse um atributo da classe seria possível sim.

Entendi,

Muito obrigado Romário!