Creo que me falta algo básico aquí. Cualquier explicación o sugerencia a preguntas previamente hechas será muy útil.¿Hay una subclase de matriz String de una matriz de objetos?
import java.util.Arrays;
import java.util.List;
public class St {
public static void bla(Object[] gaga) {
gaga[0] = new Date(); // throws ArrayStoreException
System.out.println(gaga[0]);
}
public static void bla(List<Object> gaga) {
System.out.println(gaga.get(0));
}
public static void main(String[] args) {
String[] nana = { "bla" };
bla(nana); // Works fine
List<String> bla1 = Arrays.asList(args);
bla(bla1); // Wont compile
System.out.println(new String[0] instanceof Object[]); // prints true
System.out.println(nana.getClass().getSuperclass().getSimpleName()); // prints Object
}
}
Por lo tanto, parece que una List<String>
no es una subclase de un List<Object>
sino un String[]
es una subclase de Object[]
.
¿Es esto una suposición válida? Si es así, ¿por qué? Si no, ¿por qué?
Gracias
De @maerics comenta a continuación: la 'nueva instancia String [0] de Object []' devuelve verdadero. Entonces, String [] es un tipo de Objeto y un tipo de Objeto [] y un tipo de CharSequence [] etc. ¿Correcto? – Kal
@Kal que parece ser un caso especial para cubrir la covarianza. Ver mi actualización – Bozho
Gracias .. Acabo de ver su edición. – Kal