Проблема связана со следующим потенциальным классом:
class FunnyNumber extends Integer { }
Этот класс не расширяется Comparable<T>
, поэтому его нельзя использовать в качестве базы T
.
Другими словами, extends Comparable<Integer>
не совпадает с extends Comparable<T>
.
Ваш второй класс вообще не должен быть общим.
Вам следует использовать дженерики, только если вы хотите изменить параметр типа.
Здесь вам нужен единственный фиксированный тип, поэтому вы должны создать обычный неуниверсальный класс, который расширяет BinaryTree<Integer>
. (или просто используйте BinaryTree<Integer>
напрямую и вообще не создавайте отдельный класс)