Java · Avançado · Português · Técnico
covariância de arrays
Característica dos arrays Java em que String[] é aceito onde Object[] é esperado. A checagem de tipo ocorre só na execução e pode lançar ArrayStoreException.
Onde usar
Aparece em entrevistas e em bugs de código antigo. É um dos motivos pelos quais os genéricos são invariantes: List<String> não é List<Object>.
Em código
Object[] objs = new String[1];
objs[0] = 42; // ArrayStoreException
// List<Object> l = new ArrayList<String>();
// não compila: genéricos são invariantesExemplos
O compilador aceitou, mas deu ArrayStoreException por causa da covariância de arrays.
Com lista isso nem compila, só com array.
Cuidado
Não confunda com genéricos: List<String> não pode ser atribuída a List<Object>, e o compilador recusa na hora.
Antônimos
invariância de genéricos