Genericos

1 resposta
Y

Possui as seguintes classes :

class Animal{}
class Cachorro extends Animal{}

Gostaria de adicionar elementos nesse List, mas nao estou conseguindo usar a sintaxe correta, poderiam me ajudar

List <? extends Animal> alist = new ArrayList<Cachorro>();

grato

1 Resposta

davidbuzatto

O que você quer fazer?
A construção que está usando está errada.
Você até consegue instanciar a lista, mas não consegue usá-la.

Crie uma lista que armazena Animais e então insira objetos das subclasses de Animal.

Exemplo:
import java.util.*;

public class TesteAnimal {

    public static void main( String[] args ) {
        
        List<Animal> alist = new ArrayList<Animal>();

        Cachorro c = new Cachorro();
        Gato g = new Gato();
        
        alist.add( c );
        alist.add( g );
        
        for ( Animal a : alist ) {
            a.falar();
        }
        
    }
    
    
}

abstract class Animal {
    public abstract void falar();
}

class Cachorro extends Animal {
    
    @Override
    public void falar() {
        System.out.println( "au au" );
    }
    
}

class Gato extends Animal {
    
    @Override
    public void falar() {
        System.out.println( "miau" );
    }
    
}
Criado 14 de dezembro de 2010
Ultima resposta 14 de dez. de 2010
Respostas 1
Participantes 2