Почему значение final можно изменять?
Его нельзя изменить(нельзя изменить ссылку). А в данном примере меняют не его, а в него записывают инкрементированное значение counter.
Так counter и не final. Здесь final значение id.