java.lang.String无法强制转换为TreeComparable

时间:2014-08-10 12:11:03

标签: java casting comparable

TreeComparableComparable界面。

错误:

java.lang.String cannot be cast to TreeComparable

这是给我错误的行

if (((TreeComparable) r.getInfo()).compareTo((TreeComparable) p.getInfo()) < 0 )

以下是该行的方法:

public void insertBST(Object o) {
    ObjectTreeNode p, q;

    ObjectTreeNode r = new ObjectTreeNode(o);
    if (root == null)
        root = r;
    else {
        p = root;
        q = root;
        while (q != null) {
            p = q;
            if (((TreeComparable)(r.getInfo())).compareTo((TreeComparable)(p.getInfo())) < 0 )
                q = p.getLeft();
            else
                q = p.getRight();
        }
        if (((TreeComparable)(r.getInfo())).compareTo((TreeComparable)(p.getInfo())) < 0)
            setLeftChild(p, r);
        else
            setRightChild(p, r);
    }
}

注意:BST代表二叉搜索树。

getInfo类的ObjectTreeNode方法:

private Object info;
public Object getInfo() {
    return info;
}

最后,我不知道这些是否会有所帮助,但我的TreeComparable compareTo声明:

int compareTo(Object o);

compareTo类中的(Word)方法:

String word;        
public int compareTo(Object o) {
    Word w = (Word) o;
    return this.word.compareTo(w.getWord());
}

非常感谢帮助。

1 个答案:

答案 0 :(得分:1)

这是因为String没有实现接口TreeComparableComparable实现了一个接口String。字符串可以升级到此接口。