Хорошо, поэтому я пытался реализовать простое двоичное дерево поиска, которое по умолчанию использует сопоставимый тип данных.
Игнорирование всех моих других методов в классе, это общие настройки, которые я считаю довольно стандартными:
public class BSTNode<E extends Comparable<? super E>>{
E data;
BSTNode<E> left;
BSTNode<E> right;
//and I'm trying to define a static method(inside of the class) like this:
public static <E> String displayAscending(BSTNode<E> node){}
}
Но компилятору это не нравится.Теперь я немного новичок в родовых типах, поэтому я объясню свое понимание того, что это делает, и это может помочь вам понять, что не так с моим мышлением.
E расширяет Comparable Итак, в основном это объект E, который является расширением Comparable.Comparable, имеющий элемент, который является предком E, который по сути является абстрактным способом сказать, что E можно сравнить с другими его элементами, используя интерфейс Comparable.
Затем в моем статическом методе я пытаюсь рекурсивно передать BSTNode.Кажется, я не могу понять, почему это не работает.Я знаю, что если я пройду BSTNode<?>
, это будет нормально, но это кажется опасным.Если бы кто-то мог объяснить мне, ПОЧЕМУ это не работает, я мог бы попытаться найти другое решение.