Pode ser útil pensar na projeção estelar como uma forma de representar não qualquer tipo, mas algum tipo fixo que você não sabe exatamente o que é.
Por exemplo, o tipo MutableList<*>
representa a lista de algo (você não sabe o que exatamente). Portanto, se você tentar adicionar algo a essa lista, não terá sucesso. Pode ser uma lista de String
s, ou uma lista de Int
s, ou uma lista de outra coisa. O compilador não permitirá colocar nenhum objeto nesta lista porque não pode verificar se a lista aceita objetos desse tipo. No entanto, se você tentar obter um elemento dessa lista, certamente obterá um objeto do tipo Any?
, porque todos os objetos em Kotlin herdam de Any
.
De asco comentário abaixo:
Além disso, List<*>
pode conter objetos de qualquer tipo, mas apenas daquele tipo, então pode conter Strings (mas apenas Strings), enquanto List<Any>
pode conter Strings e Inteiros e outros enfeites, todos na mesma lista.