Если вы хотите, чтобы содержимое Списка было неизменным, тогда ваш конструктор работает, только вы должны вызывать super.add(...)
вместо this.add(...)
; это будет означать, что ваши переопределения на add(...)
будут разумны для защиты списка от внешнего вмешательства, позволяя при этом конструктору инициализировать объект для вас.
Ваш вопрос неясен, но если вы также хотите запретить прямой доступ к объектам в Списке, вы также можете явно переопределить get(...)
и другие методы в зависимости от ситуации - хотя если вы это сделаете, то ваш метод getNextColor(...)
должен вызвать super.get(...)
вместо this.get(...)
.
Наконец, вам, вероятно, не нужна переменная-член colors
, потому что вы расширяете список - нет смысла вкладывать в него другой список.