静态方法中的泛型类型

3

我在静态方法中遇到了关于泛型类型的问题。我有以下代码:

public class BST<E extends Comparable<E>> {

    public static class Node<T> {
        private T value;
        private Node<E> left, right, parent;

        private Node(T v) {
            value = v;
        }

        public String toString() {
            return value.toString();
        }
    }
....
}

那么我想在这个静态方法中使用Node:

public static <E> boolean equalTrees(Node<E> r1, Node<E> r2)

但是在Node中,我遇到了这个错误:

BST.Node成员类型必须限定为参数化类型,因为它不是静态的。

我已经搜索过了,但找不到答案。


equalTrees 方法在哪里?它是在 BST 类中还是在 Node 类中? - Óscar López
请使用相应的语言重新打标签(我想是Java)。 - Paul Bellora
我遇到了这个问题,并解决了它,方法是不将Node声明为内部类,而是创建一个仅包含Node类的新文件。 - Alessio
1个回答

2

试试这个:

public class BST<E extends Comparable<E>> {

    public static <E> boolean equalTrees(Node<E> r1, Node<E> r2) {
        return false;
    }

    public static class Node<E> {
        private E value;
        private Node<E> left, right, parent;
    }

}

然后我得到了这个错误:无法对非静态类型 E 进行静态引用。 - Andre Roque
你的问题似乎有些遗漏,你应该发布更多的代码。正如我所提到的,上面的代码对我来说是有效的。 - Óscar López
使用完整的Node类进行编辑 - Andre Roque
1
我已经编辑了我的回答,请检查上面的代码是否适用。 - Óscar López

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接