для чего существует мутация заданная через final? то есть, мы можем указать
final x = [1,2,3]; x.add(4);
не понимаю, зачем? суть же final в том, чтобы высчитать что-то и не менять, не?
ты помечаешь final переменную x, а не сам список это значит, что ты не можешь сделать x = [4, 5, 6] (присвоить ей другой список), но ты можешь, обращаясь через x, менять сам список (сделать x.add). Иммутабельна х, а не список, на который она указывает.