使用下面的代码,我得到一个编译错误“不兼容的类型 - 找到Tree但预期Tree”。任何想法我在做什么用泛型错了?除ParentObjectClass.this之外的任何其他方式访问对象的父对象?我意识到“解决方法”,比如向指向其父对象的Node类添加一个变量。另外,我可以将myInt作为构造函数参数传递,但我希望找到更好的解决方案。感谢您的任何建议。
我在这个网站上发现了一个类似的问题,但是我为我的代码尝试了它,但无法启动它:Access "this" from Java anonymous class。
public class Tree implements TreeIF {
private int myInt;
Node root;
...
// a constructor
public Tree(Node root) {
this(root.getTree().getMyInt()); // call to different constructor
this.root = root;
}
...
// a method
public int getMyInt() {
return myInt;
}
...
// inner class
class Node {
T element;
...
Tree getTree() {
// return Tree.this; // I tried this too, but it didn't work
**return Tree.this;** // HERE'S THE COMPILE ERROR
}
}
}感谢您的建议,乔恩。而且,是的,你说得对,Tree类的T与Node类相同。树实际上包含节点,节点包含元素。 Tree类已经知道它使用Node类,所以不需要类型参数。类型参数基本上是一个传递。我只是完全摆脱了Tree的类型参数,但是接口(我不能修改)在它的几个方法中返回T,所以它需要知道T是什么。我尝试改变为E并编译......我没有得到同样的错误,但是,我在另一部分中遇到了错误。我必须找出其他错误,然后看看会发生什么。同时,还有什么进一步的建议?