Java 当I';我不使用泛型
当我尝试在Java中实现斐波那契堆时,我得到了一个泛型数组创建错误,尽管我没有使用泛型Java 当I';我不使用泛型,java,generics,Java,Generics,当我尝试在Java中实现斐波那契堆时,我得到了一个泛型数组创建错误,尽管我没有使用泛型 private void consolidate() { Node[] degrees = new Node[45]; } 节点类如下: private class Node { public E val; public Node left, right, child; public int degree; public boolean mark; pub
private void consolidate() {
Node[] degrees = new Node[45];
}
节点
类如下:
private class Node {
public E val;
public Node left, right, child;
public int degree;
public boolean mark;
public Node(E _val) {
val = _val;
}
public void insert(Node newNode) {
if(left == this) {
left = newNode;
right = newNode;
left.right = this;
left.left = this;
} else {
Node temp = left;
left = newNode;
left.right = this;
left.left = temp;
temp.right = left;
}
}
public void unlink() {
left.right = right;
right.left = left;
if(child != null) {
Node dummy = child;
do {
left.insert(dummy);
dummy = dummy.left;
} while(dummy != child);
}
}
}
我想可能是这部分导致了错误:
public E val;
及
但是我把它们都改成了对象
,它仍然不起作用。如果有帮助,E
扩展Comparable
公共类FibonacciHeap
您的类FibonacciHeap
实际上是泛型的,因此它的内部私有类节点
也是泛型的,如第一条注释所述
如果您认为您的节点类不应该是泛型的,您可以使用objectval
将其设置为内部静态类:
public class FibonacciHeap<E extends Comparable<E>> {
private static class Node {
Object val;
// ...
}
}
还有一个从
FibonacciHeap
中删除泛型的选项。我猜Node
是FibonacciHeap
的一个内部类。但是泛型的内部类实际上是泛型,因为它在类型参数的范围内。你知道这一点,因为你在节点
类中使用了E
。你建议我如何解决这个问题?我会使用ArrayList
而不是数组。
public class FibonacciHeap<E extends Comparable<E>>
public class FibonacciHeap<E extends Comparable<E>> {
private static class Node {
Object val;
// ...
}
}
public class FibonacciHeap<E extends Comparable<E>> {
}
private class Node {
Object val;
// ...
}