Хорошо, поэтому я пытался реализовать простое двоичное дерево поиска, которое по умолчанию использует сопоставимый тип данных.
Игнорируя все мои другие методы в классе, это общая настройка, которая у меня есть, и я считаю ее довольно стандартной:
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. Сравнимо наличие элемента, который является предком E, что по сути является абстрактным способом сказать, что E можно сравнить с другими его элементами с помощью интерфейса Comparable.
Затем в моем статическом методе я пытаюсь рекурсивно передать BSTNode. Я не могу понять, почему это не работает. Я знаю, что если я пройду BSTNode<?>
, он будет работать нормально, но это кажется опасным. Если бы кто-нибудь мог объяснить мне, ПОЧЕМУ это не работает, я бы попытался найти другое решение.