Não consigo imaginar muito bem como eh um array de varios tipos, criando um array de Object ja eh de certa forma um array de varios tipos (todos possiveis). O que vc quer dizer varios tipos? tipo na posição 0 é Gato, na 1 eh Cao, etc? isso não da hehe.
Mas se seus animais herdassem de uma classe Animal, cria um array de Animal, que ele soh aceitara animais hehe ou então usa List’s…
algumas sugestões, da uma testada, e se ainda der erro na inserção do array bi. fala ae… tem outras formas de se fazer
import java.util.ArrayList;
import java.util.List;
public class Teste {
abstract class Animal { }
class Cao extends Animal { }
class Gato extends Animal { }
class Entry<T1 extends Animal, T2 extends Animal> {
private T1 a1;
private T2 a2;
public Entry (T1 a1, T2 a2) {
this.a1 = a1;
this.a2 = a2;
}
public T1 getA1() { return a1; }
public T2 getA2() { return a2; }
}
public void y() {
Object[][] obj = new Object[2][2];
obj[0][0] = new String();
obj[0][1] = new Integer(1);
obj[1][0] = new Cao();
obj[1][1] = new Gato();
}
public void z() {
Animal[][] animais = new Animal[2][2];
animais[0][0] = new Cao();
animais[0][1] = new Gato();
// animais[1][0] = new String(); //erro (só aceita Animal)
// animais[1][1] = new Integer(1); //erro (só aceita Animal)
}
public void x() {
List<Animal> list = new ArrayList<Animal>();
list.add(new Cao());
list.add(new Gato());
// list.add(new String()); //erro (só aceita Animal)
}
public void k() {
List<Entry<Cao, Gato>> list = new ArrayList<Entry<Cao, Gato>>();
// list.add(new Entry<Cao, Gato>(new Gato(), new Cao())); //erro porque eu disse que eh Cao, Gato e passo Gato, Cao
list.add(new Entry<Cao, Gato>(new Cao(), new Gato()));
list.add(new Entry(new Gato(), new Cao())); // cuidado com essas coisas, não dei valores aos meus Generics T1 e T2 então ele assume qq animal, então passei Gato, Cao para uma lista de Entry's de Cao, Gato, mas nesses casos é aprensentado um warning
Entry<Cao, Gato> x = list.get(1);
Cao k = x.getA1(); // classCastException porque no segundo add eu passei um Entry com erro
}
}