ExpertiDict

Java · Avançado · Português · Técnico

covariância de arrays

/kovaɾiˈɐ̃sjɐ dʒi aˈhajs/substantivo

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 invariantes

Exemplos

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

Veja também

Todos os termos de Java