Java - статический универсальный тип с использованием Comparable - PullRequest
1 голос
/ 13 февраля 2012

Хорошо, поэтому я пытался реализовать простое двоичное дерево поиска, которое по умолчанию использует сопоставимый тип данных.

Игнорирование всех моих других методов в классе, это общие настройки, которые я считаю довольно стандартными:

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<?>, это будет нормально, но это кажется опасным.Если бы кто-то мог объяснить мне, ПОЧЕМУ это не работает, я мог бы попытаться найти другое решение.

1 Ответ

6 голосов
/ 13 февраля 2012

попробуйте

public static <E extends Comparable<? super E>> String displayAscending(BSTNode<E> node)
...