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

Desafios: Aprimorando ArrayLists 1 ao 3

Animal

package br.com.alura.animal;

public class Animal {
    private String nome;
    private String som;

    public Animal(String nome, String som) {
        this.setNome(nome);
        this.setSom(som);
    }

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

    public void setSom(String som) {
        this.som = som;
    }

    @Override
    public String toString() {
        return "Nome: " + nome + "\nSom: " + som;
    }
}

Cachorro

package br.com.alura.animal;

public class Cachorro extends Animal {

    public Cachorro(String nome, String som) {
        super(nome, som);
    }
}

Main

import br.com.alura.animal.Animal;
import br.com.alura.animal.Cachorro;

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        Animal vaca = new Animal("Vaca", "Muuuu");
        Animal tigre = new Animal("Tigre", "Grrrr");
        Cachorro cachorro = new Cachorro("Draco", "Au Au");
        Cachorro cachorro2 = new Cachorro("Bolt", "Woof Woof");

        ArrayList<Animal> animais = new ArrayList<>();
        animais.add(vaca);
        animais.add(tigre);
        animais.add(cachorro);
        animais.add(cachorro2);

        for (Animal animal : animais) {
            if (animal instanceof Cachorro) {
                System.out.println("Cachorro encontrado: " + "\n" +  cachorro );
            } else {
                System.out.println("Animal encontrado: " + "\n" + animal);
            }
        }
    }
}
2 respostas
solução!

Oi, kevin! Como vai?

Seu uso de herança ficou bem organizado e a lógica para percorrer a lista chamou atenção. No for, a identificação dos cachorros funciona, mas lembre que você está imprimindo sempre o mesmo objeto cachorro, mesmo quando o loop encontra cachorro2.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Muito obrigado por trazer esse ponto ao meu ver, segue abaixo o trecho do código corrigido:

for (Animal animal : animais) {
            if (animal instanceof Cachorro) {
                System.out.println("Cachorro encontrado: " + "\n" +  Cachorro.class.cast(animal) );
            } else {
                System.out.println("Animal encontrado: " + "\n" + Animal.class.cast(animal));
            }
        }