如何在另一个泛型中访问通用嵌套?

时间:2016-05-20 22:34:13

标签: java generics

我有一些教授的代码,有以下几个类:

public class ModifyableTree<A extends Comparable<? super A>> implements Parent<Tree<A>> {...}

public interface Parent<A> {
    abstract public void updateChild(A oldChild, A newChild);
    abstract public int size();
}

public abstract class Tree<A extends Comparable<? super A>> implements Iterable<A>

我遇到的问题是AupdateChild()方法参数中的Parent<A>是指<Tree<A>>所以我无法找到一种定义从A返回Tree<A>的方法的方法。

泛型中的泛型如何像这样访问?还有什么叫做<A extends Comparable<? super A>>实际上是什么意思呢?

2 个答案:

答案 0 :(得分:0)

size_t strlen(const char *str)
{
    size_t i;

    for (i = 0; *str; ++i)
        ;

    return i;
}

类型A必须由可比较的样本扩展:

<A extends Comparable<? super A>>

public class A extends Comparable<T>..... 表示Comparable的类型必须是层次结构高于Comparable<? super A>的类

但我认为this会对您有所帮助。

答案 1 :(得分:0)

为什么需要A?实例化你的人告诉你A是什么。

public class ModifyableTree<A extends Comparable<? super A>> implements Parent<Tree<A>> {
    private Tree< A > currentChild;

    // hard to tell what the semantics of updateChild are supposed to be
    @Override
    public void updateChild( Tree< A > oldChild, Tree< A > newChild ) {
        currentChild = newChild;
    }
    @Override
    public int size() { ... }

    // for example
    public A opQuestionMethod() {
        return currentChild.iterator().next();
    }
}

也许OP正在尝试做的是坚持A总是被某些其他类型Tree< B >的{​​{1}}替换。在这种情况下,B的声明需要一个约束:

Parent