public void queryArea(long id, List list) {

Apanage obj = apDao.getArea(id);
if (new Long(obj.getPApanage()).equals(new Long(0))) {
list.add(id);
return;
} else {
queryArea(obj.getPApanage(), list);
list.add(id);//这句会执行吗?
System.out.println("----------ID的值为-------"+id);
}

}queryArea(obj.getPApanage(), list);这个是调用本身的方法,都去调用了,程序又转到前面去了,list.add(id);这个还能执行么?实际上我运行了,是可以执行的,不过我是想不明白.

解决方案 »

  1.   

    可以执行。这个是递归问题,当调用方法
    queryArea(obj.getPApanage(), list)执行完后就会执行接下来的语句。
                list.add(id);//这句会执行吗?
      

  2.   

    if (new Long(obj.getPApanage()).equals(new Long(0))) {
                list.add(id);
                return;
            } 
    作为递归的终止,只要输入数据都能满足最终到达这个终止,就可以继续执行下去,顺利完成。