1
resposta

[Dúvida] cast permitido em cópia usando método toList()

Eu estava seguindo passos da vídeo aula, porém notei que não houve Exception lançada (como demonstrado pelo professor que ocorreria) no cast da variável para MutableCollection, mesmo que o método get() retorne uma cópia por meio do método toList() - que é o indicado, nessas tipo de situação.

Apesar da exceção não ter sido lançada, o encapsulamento da minha property ocorreu perfeitamente. Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá Joaquim

No caso do método toList(), ele retorna uma nova lista imutável com os elementos da coleção original. No entanto, o tipo de dado retornado é List, ou seja, uma lista imutável. Portanto, ao fazer o cast para MutableCollection, você está tentando atribuir uma lista imutável a uma variável que espera uma coleção mutável.

O motivo pelo qual não ocorreu uma exceção é que o Kotlin permite o cast seguro (safe cast) quando o compilador consegue garantir que o cast é válido. Nesse caso, como a lista retornada pelo toList() é uma cópia imutável da coleção original, o compilador consegue inferir que não haverá nenhum problema ao atribuir essa lista a uma variável do tipo MutableCollection.

No entanto, é importante ressaltar que, mesmo que o cast tenha sido permitido, a lista continuará sendo imutável. Ou seja, você não poderá adicionar ou remover elementos dessa lista, mesmo que a variável seja do tipo MutableCollection. O cast apenas permitirá que você utilize os métodos da interface MutableCollection para acessar os elementos da lista.

Espero ter esclarecido sua dúvida! Se tiver mais alguma pergunta, estou à disposição. Bons estudos!