Подпись метода в базовом классе:
<T> Collection<T> transform(Collection<T> list)
говорит: «Я приму коллекцию с элементами любого типа и верну вам коллекцию элементов этоготот же тип.
Согласно принципу подстановки Лискова, любой подкласс, который реализует этот метод, должен делать то же самое. В частности, он должен принимать коллекцию с элементами любого типа.
Если вы попытаетесьпереопределите это с помощью метода:
Collection<CharSequence> transform(Collection<CharSequence> list)
тогда он не будет делать то, что требуется: он не принимает элементы коллекции любого типа, он принимает только элементы определенного типаСледовательно, он не переопределяет метод суперкласса
Обычно нет проблем с определением метода в подклассе, который не переопределяет метод в суперклассе: вы можете определить новые методы в подклассе, которые нене существует в суперклассе. Но из-за стирания типов вы не можете продолжать иметь оба метода, поскольку они имеют одинаковую сигнатуру. Следовательно, компилятор запрещает вам fРом делает это.