Java getUserObject() 返回字符串而不是用户对象

创建节点后,我想获取一个 MyNodeUserObject,以便稍后调用 getFlops() 方法。但我无法将 userobject 转换为 MyNodeUserObject。


创建节点:


MyNodeUserObject userObject = new MyNodeUserObject("aaa","AA-10");


DefaultMutableTreeNode node = new DefaultMutableTreeNode(userObject);



public static void visitAllNodes(DefaultMutableTreeNode node, JTree tree) {

    //java.lang.ClassCastException: java.lang.String cannot be cast to MyNodeUserObject

    MyNodeUserObject nodeInfo = (MyNodeUserObject) node.getUserObject();

MyNodeUserObject.class


public final class MyNodeUserObject{

    private static final long serialVersionUID = 1L;


    private final String flops;

    private final String nodeName;


    public MyNodeUserObject(String nodeName, String flops) {

        this.flops = flops;

        this.nodeName = nodeName;

    }


    public String getFlops() {

        return flops;

    }


    public String getNodeName() {

        return nodeName;

    }


    @Override

    public String toString() {

        return nodeName;

    }

tree.txt 的内容:

节点名称;IsFolder(true/false);Parent;Flops

my range;true; ;

a;false;我的范围;AA,AKs,AKo

b;false;我的范围;66,55,44,33,22

c;false;我的范围;JJ,TT,99,88

http://img2.mukewang.com/616fce0a0001b47a01450089.jpg

蛊毒传说
浏览 340回答 1
1回答

LEATH

查看您在注释中链接的代码,树的根节点实际上确实包含String("<html><b>Ranges</b></html>") 作为其userObject.鉴于此,您的选择是用周围的节点替换根节点MyNodeUserObject;这可能需要对该类进行一些更改才能正确处理根节点在visitAllNodes方法中添加一个特殊情况(instanceof MyNodeUserObject例如,检查)确保visitAllNodes没有用根节点调用
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java