我正在尝试实现通用二叉树。这是节点类的声明
public abstract class Node<E extends Comparable<E>> {
}
具体节点:
public class BinaryTreeNode extends Node<BinaryTreeNode> implements
Comparable<BinaryTreeNode> {
@Override
public int compareTo(final BinaryTreeNode node) {
if (this == node) {
return 0;
}
return this.getValue().compareTo(node.getValue());
}
}
抽象树类
public abstract class BinaryTree<T extends Node<T>> {
/**
* TODO.
*/
public BinaryTree() {
}
/**
* TODO.
*
* @param node TODO
*/
public abstract void addNode(final T node);
/**
* TODO.
*
* @param node TODO
*/
public abstract void removeNode(final T node);
}
由于Node的T参数,这是我得到绑定不匹配的地方。我试过让它扩展Comparable,但是我似乎无法让它工作。我该如何申报?我想让二叉树能够使用扩展Node的所有类。
这是一棵具体的树:
public class ConcreteBinaryTree extends BinaryTree {
private Node root;
@Override
public void addNode(Node node) {
// TODO Auto-generated method stub
}
@Override
public void removeNode(Node node) {
// TODO Auto-generated method stub
}
}
我如何在此处添加类型参数?
答案 0 :(得分:5)
您的T
课程也需要将Comparable
声明为public static abstract class BinaryTree<T extends Node<T> & Comparable<T>>
- 您可以使用类型交集:
ConcreteBinaryTree
您的public class ConcreteBinaryTree extends BinaryTree<BinaryTreeNode> {
@Override
public void addNode(BinaryTreeNode node) { }
@Override
public void removeNode(BinaryTreeNode node) { }
}
课程可能如下所示:
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{ @"fields" : @"id,name,picture.width(100).height(100)"}]
startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
if (!error) {
}