| 网站首页 | 业界新闻 | 群组 | 人才 | 技术文章 | 下载频道 | 博客 | 代码贴 | 编程论坛
绝地游戏外挂辅助教学千里之行 始于足下
共有 710 人关注过本帖
标题:这段代码一直报空指针,找不到解决方案
只看楼主 收藏
王小翔
Rank: 2
等 级:论坛游民
帖 子:13
专家分:20
注 册:2017-3-25
结帖率:0
  已结贴   问题点数:20  回复次数:15   
这段代码一直报空指针,找不到解决方案
//这个是domain里边的

package edu.njcc.rj1621.domain;

import java.util.ArrayList;
import java.util.List;

public class ObjectTreeNode {

    private Object object;
    private List<ObjectTreeNode> children;
   
    public ObjectTreeNode() {
        this.children= new ArrayList<ObjectTreeNode>();
    }
   
   
    public ObjectTreeNode(Object object) {
        this.object = object;
    }


    public Object getObject() {
        return object;
    }
    public void setObject(Object object) {
        this.object = object;
    }
    public List<ObjectTreeNode> getchildern() {
        return children;
    }
    public void setList(List<ObjectTreeNode> children) {
        this.children = children;
    }
    public void addChild(ObjectTreeNode obj){
        this.children.add(obj);
    };
   
   
   
}


//这个是Client里边的 可以忽略showBbsTree这个方法 因为还没运行到那 是在list2Tree里边报错的 我会在后边贴运行结果

package edu.njcc.rj1621.client;

import java.util.List;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import edu.njcc.rj1621.domain.Bbs;
import edu.njcc.rj1621.domain.BbsTreeNode;
import edu.njcc.rj1621.domain.ObjectTreeNode;
import edu.njcc.rj1621.service.BbsSvr;
import edu.njcc.rj1621.service.BbsSvrImpl;

public class CopyOfTestBbsQueryList {



    public static void main(String[] args) {

        BbsSvr bbsSvr = new BbsSvrImpl();
        List<Bbs> list = bbsSvr.queryBbsList(1);
        
        ObjectTreeNode ob = new ObjectTreeNode();
        Object list2 = list;
        
        for (Bbs bbs : list) {
            if (bbs.getBbsPid() == 0) {
                ObjectTreeNode child = new ObjectTreeNode(bbs);
                list2Tree(child, list2);
                ob.getchildern().add(child);
               
            }
        }
        List<ObjectTreeNode> children = ob.getchildern();
//        for (ObjectTreeNode child : children) {
//            showBbsTree(child,0);
//        }
    }

    private static void showBbsTree(ObjectTreeNode root,int level) {
        
        for (int i = 0; i < level; i++) {
            System.out.print("\t");
        }
        
        
        Object object = root.getObject();
        Method method;
        try {
            method = object.getClass().getMethod("getContent", null);
            Object invoke = method.invoke(object, null);
            System.out.println(invoke);
            List<ObjectTreeNode> list = root.getchildern();

            
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (SecurityException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        
//        List<BbsTreeNode> children = root.getChildren();
//        for (BbsTreeNode child : children) {
//            showBbsTree(child,level+1);
//        }
    }


    private static void list2Tree(ObjectTreeNode root, Object list) {
         
        List list1=(List) list;
        for (Object object : list1) {
            try {
                try {
                    Object object2 = root.getObject();
                    Method m2 = object2.getClass().getMethod("getBbsId", null);
                    Method m1 = object.getClass().getMethod("getBbsPid", null);
                    Object invoke = m1.invoke(object, null);
                    Object invoke2 = m2.invoke(object2, null);
                    String string = invoke.toString();
                    String string2 = invoke2.toString();
                    int i = Integer.parseInt(string);
                    int j = Integer.parseInt(string2);
//                    System.out.println(string);
//                    System.out.println(string2);
                    if (i==j) {
                        System.out.println("你进来了");
                        ObjectTreeNode obj = new ObjectTreeNode(object);
                        list2Tree(obj,list);
                        System.out.println("你到第二步了");
                        root.addChild(obj);
                    }
                           
                    
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                } catch (IllegalArgumentException e) {
                    e.printStackTrace();
                } catch (InvocationTargetException e) {
                    e.printStackTrace();
                }
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            } catch (SecurityException e) {
                e.printStackTrace();
            }
        }
   
    }

}

//这是运行结果
你进来了
你进来了
你进来了
你到第二步了
Exception in thread "main" java.lang.NullPointerException
    at edu.njcc.rj1621.domain.ObjectTreeNode.addChild(ObjectTreeNode.java:34)
    at edu.njcc.rj1621.client.CopyOfTestBbsQueryList.list2Tree(CopyOfTestBbsQueryList.java:96)
    at edu.njcc.rj1621.client.CopyOfTestBbsQueryList.list2Tree(CopyOfTestBbsQueryList.java:94)
    at edu.njcc.rj1621.client.CopyOfTestBbsQueryList.list2Tree(CopyOfTestBbsQueryList.java:94)
    at edu.njcc.rj1621.client.CopyOfTestBbsQueryList.main(CopyOfTestBbsQueryList.java:28)

请大佬看看啊
搜索更多相关主题的帖子: children  解决方案  private  package  Object  
2017-05-31 16:52
林月儿
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:湖南
等 级:版主
威 望:74
帖 子:1390
专家分:5957
注 册:2015-3-19
  得分:10 
Exception in thread "main" java.lang.NullPointerException
    at edu.njcc.rj1621.domain.ObjectTreeNode.addChild(ObjectTreeNode.java:34)
报错信息可以追溯错误出处吧,先对照自己分析一下

like wind.
2017-05-31 22:26
王小翔
Rank: 2
等 级:论坛游民
帖 子:13
专家分:20
注 册:2017-3-25
  得分:0 
回复 2楼 林月儿
就是 add那出错  完全分析不出来
2017-06-02 08:23
林月儿
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:湖南
等 级:版主
威 望:74
帖 子:1390
专家分:5957
注 册:2015-3-19
  得分:0 
ob.getchildern().add(child);这句话上面加一句打印ob.getchildern()的语句,看看它是不是空呗

like wind.
2017-06-02 12:44
王小翔
Rank: 2
等 级:论坛游民
帖 子:13
专家分:20
注 册:2017-3-25
  得分:0 
回复 4楼 林月儿
你好,可以给个QQ或者什么联系方式吗?我困扰好几天了,是在解决不了,实在感谢。、
2017-06-02 13:07
王小翔
Rank: 2
等 级:论坛游民
帖 子:13
专家分:20
注 册:2017-3-25
  得分:0 
回复 4楼 林月儿
我改进了一下方法,然后那个显示命令的窗口直接被错误爆满了。完全没有头绪
2017-06-02 13:08
calix
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:27
帖 子:249
专家分:1442
注 册:2015-5-4
  得分:10 
public ObjectTreeNode(Object object) {
    this.object = object;
}
你实例化的时候调用的是这个有参的构造函数,children这个字段没有被初始化
2017-06-02 16:09
王小翔
Rank: 2
等 级:论坛游民
帖 子:13
专家分:20
注 册:2017-3-25
  得分:0 
回复 7楼 calix
哇 ,谢谢就是这个问题,我以为那个没有构造参数的方法和那个有构造参数的构造方法,可以同时自动被调用。又长知识了。真的非常感谢
2017-06-02 21:36
王小翔
Rank: 2
等 级:论坛游民
帖 子:13
专家分:20
注 册:2017-3-25
  得分:0 
回复 8楼 wanlu
非常感谢 我知道了谢谢
2017-06-02 21:36
王小翔
Rank: 2
等 级:论坛游民
帖 子:13
专家分:20
注 册:2017-3-25
  得分:0 
回复 4楼 林月儿
非常感谢你我知道了 楼下帮我解决了。
2017-06-02 21:37







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.074899 second(s), 8 queries.
Copyright©2004-2017, BCCN.NET, All Rights Reserved