if (detailtable.length > 0) { DetailTable dt = detailtable[i];// 针对每个明细表遍历 Row[] s = dt.getRow();// 获取每个明细表的行数组 log.info("明细表长度detail table length:"+s.length); Common_OA_Detail[] detailsobject=new Common_OA_Detail[s.length];//根据行数的多少实例化对象,这就是问题的来源。 for (int j = 0; j < s.length; j++) { Row r = s[j];// 针对每一行 tab_details[j].setITMNO(Integer.toString(j)); //设置序列号 tab_details[j].setBSCHL("40");// 借账 tab_details[j].setFYLB("差旅费用");// 费用类别 // 获取明细表中的报销总类别0-小类别1-总帐代码2-报销金额3-成本中心4-内部订单5 titlewenben = common.getDeptname() + common.getOaname() + "报销" + "费用"; detailsobject[j].setZzcode(selectname);// 获取明细表的总帐代码 tab_details[j].setSGTXT(titlewenben); } }
问题的缘由在于:java
Common_OA_Detail[] detailsobject=new Common_OA_Detail[s.length];//根据行数的多少实例化对象,这就是问题的来源。
我虽然声明了detailobject 为数组类型,而且实例化了。可是我没有实例化这个数组的元素 对象 Common_OA_Detail,而后经过对象来对数组赋值。若是像下面这样:数组
detailsobject[j].setZzcode(selectname);// 获取明细表的总帐代码
这样就会报错。code
正确的应该是先实例化对象,而后将对象赋值到数组里面。对象
Common_OA_Detail c_o_d=new Common_OA_Detail(); c_o_d.set[...]=""
由于这已经不是基本类型了,而是对象了,因此不能像基本类型那样赋值get