que estaba haciendo una de estas pruebas Java en línea y me hicieron esta pregunta: ¿java.lang.Object o = 1; // ¿por qué compila esto?
Q: Indicar asignación correcta:
Long l = 1;
Double d = 1;
Integer i = 1;
String s = 1;
Object o = "1";
System.out.println(o);
o = 1;
System.out.println(o);
Inténtelo usted mismo antes de ir más lejos.
Bueno, yo puedo decir que me equivoqué, investigué y encontré:
//Long l = 1; //cannot widen and then box
Long ll = 1L;//no need to widen, just box
//Double d = 1;//cannot widen and then box
Double dd = 1d;//no need to widen, just box
Integer i = 1;//no need to widen, just box
//String s = 1;//cannot do implicit casting here
Object o = "1";//this compiles and is just plain weird
System.out.println(o);//output is 1
o = 1;//this also compiles and is also weird
System.out.println(o);//output is 1
Puede alguien decir por qué:
Object o = 1;
y Object o = "1";
de compilación y la salida 1 en ambos casos , esto me desconcierta
Muchas gracias
Guau, gracias por la respuesta, pero tengo que decirte que me siento tan estúpido ahora que debería saber esto. – Ramo
@Ramo: no cuestionar algo que no sabes sería estúpido :-) – Grundlefleck