我有一些教授的代码,有以下几个类:
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>
我遇到的问题是A
中updateChild()
方法参数中的Parent<A>
是指<Tree<A>>
所以我无法找到一种定义从A
返回Tree<A>
的方法的方法。
泛型中的泛型如何像这样访问?还有什么叫做<A extends Comparable<? super A>>
实际上是什么意思呢?
答案 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