1
好的,所以我一直試圖實現一個簡單的二叉搜索樹,默認情況下使用可比數據類型。Java - 使用可比較的靜態類型
忽略類中的我的所有其他方法,這是一般的設置我有我認爲這是非常標準:
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 extends Comparable 所以基本上是一個對象E是Comparable的擴展。可比較的元素是E的祖先,它本質上是一個抽象的E說法,可以使用Comparable接口與其他元素進行比較。
然後在我的靜態方法中,我試圖遞歸地傳遞BSTNode。我似乎無法圍繞爲什麼它不起作用。我知道如果我通過BSTNode<?>
它工作正常,但這似乎很危險。如果有人可以向我解釋爲什麼這不起作用,我可以嘗試找到另一種解決方案。
它,如果你的作品。同BSTNode >,但我想知道爲什麼引用E我的方式給我的問題。我想確保傳遞的對象是可比較的。 – 2012-02-13 03:46:55
此外,我得到這個工作:'公共靜態>字符串顯示增加(BSTNode 節點)' 我仍然想知道爲什麼我的上述代碼給我的問題。 –
2012-02-13 03:55:20
它給出了問題,因爲'E'沒有在'displayAscending'中給出任何類型邊界,但是它需要滿足'B extends N'''中要使用的'E extends Comparable super E>'。你使用什麼字母('E' /'T'/whatever)是不相關的,所以當你改用'T'時它仍然有效。 –
mange
2012-02-13 04:14:03