Boa tarde galera,
Tenho umas dúvidas. Primeira dúvida:
No livro da Kathy Sierra tem esse código:
public class Dims {
public static void main(String args[]){
int[][] a = {{1,2}, {3,4}};
int[] b = (int []) a[1];
Object o1 = a; //MINHA DÚVIDA
int[][] a2 = (int [][]) o1;
int [] b2 = (int []) o1; //ERRO AQUI, MAS NÃO IMPORTA
System.out.println(b[1]);
}
}
int numbers[] = null;
Integer x = numbers; //ERRO: Uncompilable source code - incompatible types
Minha dúvida é porque no primeiro bloco de código nós podemos atribuir um array bidimensional para uma variável de referência do tipo Object(que não é um array bidimensional) e no segundo bloco de código não podemos atribuir um array bidimensional de int para uma variável de referência do tipo Integer. Porque o primeiro está correto e porque o segundo não compila sendo que os 2 códigos são muito similares?
A segunda dúvida é parecida com a primeira. Segunda dúvida:
Porque a primeira linha abaixo compila e a segunda não, apesar da estrutura das linhas de código serem iguais?
Object[] e = new String[4]; //OK, compila
Object[] o = new int[4]; //ERRO: Uncompilable source code - incompatible types
Qual a diferença das linhas abaixo?
Object o = new int[4]; //OK, compila
Object[] o = new int[4]; //ERRO: Uncompilable source code - incompatible types
valeu galera!
