用下面的代碼,我得到一個編譯錯誤「不兼容的類型 - 找到Tree<T>
但預計Tree<T>
」。任何想法我在做什麼用泛型錯了?除ParentObjectClass.this之外的任何其他方式訪問對象的父對象?我意識到「解決方法」,比如向指向其父對象的Node類添加一個變量。另外,我可以將myInt作爲構造函數參數傳遞,但我希望找到更好的解決方案。感謝您的任何建議。Java - 訪問對象的父對象,涉及泛型?
我在這個網站上遇到了類似的問題,但我試了一下我的代碼,並無法使其工作:Access "this" from Java anonymous class。
public class Tree<T> implements TreeIF<T> {
private int myInt;
Node<T> root;
...
// a constructor
public Tree(Node<T> root) {
this(root.getTree().getMyInt()); // call to different constructor
this.root = root;
}
...
// a method
public int getMyInt() {
return myInt;
}
...
// inner class
class Node<T> {
T element;
...
Tree<T> getTree() {
// return Tree.this; // I tried this too, but it didn't work
**return Tree<T>.this;** // HERE'S THE COMPILE ERROR
}
}
}
感謝您的建議,喬恩。而且,是的,你說得對,Tree類的T與Node類相同。樹實際上包含節點,節點包含元素。 Tree類已經知道它使用Node類,所以不需要類型參數。類型參數基本上是一個傳遞。我只是完全擺脫了Tree的類型參數,但是接口(我不能修改)在它的幾個方法中返回T,所以它需要知道T是什麼。我嘗試改變爲E並編譯......我沒有得到同樣的錯誤,但是,我在另一部分中遇到了錯誤。我必須找出其他錯誤,然後看看會發生什麼。同時,還有什麼進一步的建議?