Há objetos que não podem ser modificados, apenas excluídos. Portanto, para modificar um valor imutável pertencente a uma variável, necessita-se:
Questão
Há objetos que não podem ser modificados, apenas excluídos. Portanto, para modificar um valor imutável pertencente a uma variável, necessita-se:
Alternativas
a) Gerar um novo algoritmo com o valor indevido e utilizar uma operação de atribuição para que ele seja mostrado pela variável.
b) Gerar uma nova constante com o valor indevido e utilizar uma operação de atribuição para que ele seja mostrado pela variável.
c) Gerar um novo objeto com o valor devido e utilizar uma operação de atribuição para que ele seja mostrado pela variável.
d) Gerar uma nova variável apenas com o valor devido e, utilizar uma operação de atribuição para que ele seja mostrado pela variável.
e) Gerar uma nova constante com o valor devido e utilizar uma operação de atribuição para que ele seja mostrado pela variável.
Explicação
Um objeto imutável não pode ter seu estado alterado depois de criado. Assim, quando queremos “modificar” o valor armazenado em uma variável que referencia um objeto imutável, o que realmente fazemos é:
- criar um novo objeto (já com o valor correto);
- reatribuir a variável para apontar para esse novo objeto.
Exemplo conceitual: se uma string é imutável, ao “alterá-la” você cria outra string e faz a variável passar a referenciar a nova.
Analisando as alternativas:
- (a) fala em “novo algoritmo” (não faz sentido no contexto de imutabilidade de objetos).
- (b) e (e) falam em “nova constante” e ainda por cima usam “valor indevido” em (b); além disso, constante não é o ponto central aqui.
- (d) fala em “gerar uma nova variável”, mas não é necessário criar outra variável; o essencial é criar um novo objeto e atribuir à variável existente.
- (c) descreve exatamente o procedimento correto.