E aeeew Galera!
Bem, pintou uma duvida bonita aqui. Olhem o código abaixo:
[code]import java.util.*;
public class Teste{
public static void main(String[] args){
Integer oi = 5;
System.out.println(oi.toString());
ObjTest o = new ObjTest();
}
}
class ObjTest {
public ObjTest(){
Object[] myObjects = {new String("foo")};
Arrays.sort(myObjects);
for(int i =0; i < (myObjects.length); i++) {
System.out.print(myObjects[i].toString());
System.out.print(" ");
}
}
}[/code]
O mesmo Compila. Mas eu quero que vocês prestem atenção no meu oi.toString(). Eu estou invocando o método toString do Wrapper Integer. E funciona.
Agora Observem o Seguinte Código, que é o mesmo acima e eu implementei apenas itens na Matriz:
[code]import java.util.*;
public class Teste{
public static void main(String[] args){
Integer oi = 5;
System.out.println(oi.toString());
ObjTest o = new ObjTest();
}
}
class ObjTest {
public ObjTest(){
Object[] myObjects = {new Integer(12),new String("foo")};
Arrays.sort(myObjects);
for(int i =0; i < (myObjects.length); i++) {
System.out.print(myObjects[i].toString());
System.out.print(" ");
}
}
}[/code]
Não Compila! Dá ClassCastException.
Eu sei que quando criamos uma Matriz de Objetos, independente do Tipo de Objeto Inserido na mesma, só é retornado o tipo Object dela.
Mas, o Java deixa eu invocar um método do retorno da Matriz se sua classe pai possuir esse método. E mesmo o retorno Object que contem o Tipo Integer, contem toString em sua classe Pai.
Então lá vai a pergunta: Porquê não funciona?