如何实现一个扩展接受自身参数的接口的类?

时间:2014-06-09 11:13:45

标签: java generics interface

我正在使用本讨论中的成语How can I make an interface instance method accept arguments of the same class only, really?

interface ITree<SELF extends ITree<SELF>>{
    SELF getNode(int index);

    void setNode(int index, SELF node);
}

我的问题是,如何实现扩展ITree的树,为什么?我目前的代码如下:

public class B {
private ITree tree;
    public B (ITree tree){
        this.tree = tree;
    }
}

正如预期的那样,它会抛出警告,我应该添加一个Type。我想让使用B的类决定它应该使用哪种类型。或者更好我根本不想使用泛型来解决这个小问题。

编辑:

我在评估答案后找到了解决方案。魔鬼细节就在这一行:

<T extends ITree<T>>

以下是完整的源代码:

public class B<T extends ITree<T>> {
private T tree;
    public B (T tree){
        this.tree = tree;
    }
}

1 个答案:

答案 0 :(得分:2)

public class B<T extends ITree> {
private T tree;
    public B (T tree){
        this.tree = tree;
    }
}