从字符串转换为用户定义的对象。类强制转换异常

时间:2015-03-04 19:48:47

标签: java binary-tree

树类:

public class Tree {

    String data;
    Tree left,right;

    public Tree(String data, Tree left, Tree right){
        this.data = data;
        this.left = left;
        this.right = right;
    }
}

另一个包含特定方法的类:

public static void evaluateDecisionTree(String s){
    //String s is a post-fix converted expression.
    String tokens[] = s.split(" +");
    Stack tree_stack = new Stack();
    Tree root;

    for(int i=0; i < tokens.length; i++){

        if(tokens[i].matches("[-]?[0-9][0-9]*")){
            tree_stack.push(tokens[i]);
        }
        else if(tokens[i].equals("!")){
            tree_stack.push(new Tree(tokens[i], (Tree) tree_stack.pop()));
        }
        else{
            tree_stack.push(new Tree(tokens[i], (Tree) tree_stack.pop())); //line 138
        }

    }

错误:

  

线程中的异常&#34; main&#34; java.lang.ClassCastException:java.lang.String无法强制转换为Tree
    在In2Post.evaluateDecisionTree(In2Post.java:138)
    在In2Post.main(In2Post.java:59)

问题:

  

我知道我们无法将String转换为Object。有没有办法实现我的目标?我无法将构造函数参数更改为String,因为它会在构建决策树时违反我的逻辑。

1 个答案:

答案 0 :(得分:0)

您正在尝试将String转换为Tree,因为堆栈对象包含从split()返回的String对象。并且java.lang.String不是树。