请大家看一个有趣的函数

weiweipxb 2012-02-01 01:45:00
有两个函数

public ActionForward addrow(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception
{
MainForm mainForm = (MainForm)form;

String addRowIndex = DataGridUtils.getRowSelected(request, "tblAddr") ;

SupplierCollectionCache cache = (SupplierCollectionCache)getCollectionCache(request);
ArrayList dtlList = (ArrayList)cache.getL3DataCache();
tblAddr_update(dtlList, mainForm);

SupplierPackingAddrVO vo = new SupplierPackingAddrVO();
vo.setCompany_id(this.getCompanyId(request));
vo.setAddress_id((String)mainForm.getFld_packing_addrId("-1"));
vo.setAddress((String)mainForm.getFld_packing_address("-1"));
vo.setSdms_id((String)mainForm.getFld_packing_sdmsId("-1"));
vo.setPacking_region_id((String)mainForm.getFld_packing_regionId("-1"));
vo.setProvince_id((String)mainForm.getFld_packing_provinceId("-1"));
vo.setProvince_name((String)mainForm.getFld_packing_provinceName("-1"));
vo.setCity_id((String)mainForm.getFld_packing_cityId("-1"));
vo.setCity_name((String)mainForm.getFld_packing_cityName("-1"));
vo.setDistrict_id((String)mainForm.getFld_packing_districtId("-1"));
vo.setDistrict_name((String)mainForm.getFld_packing_districtName("-1"));
vo.setTown_id((String)mainForm.getFld_packing_townId("-1"));
vo.setTown_name((String)mainForm.getFld_packing_townName("-1"));
vo.setRef_no((String)mainForm.getFld_packing_ref_no("-1"));

dtlList.add(vo);
loadL3DataCache(mapping, form, request, response);
this.setGoAnchor(request, "tbl_addr_anchor_add");
this.setInitFocus(request, "document.forms[0].item(\"fld_packing_addrId(-1)\")");
initMainForm(mapping, form, request, response);
return mapping.getInputForward();
}

public void tblAddr_update(ArrayList dtlList, MainForm mainForm){
int size = Integer.parseInt(mainForm.getTblAddrSize());
for (int i=0; i <size; i++)
{
SupplierPackingAddrVO vo = (SupplierPackingAddrVO)dtlList.get(i);
vo.setAddress_id((String)mainForm.getFld_packing_addrId(String.valueOf(i)));
vo.setAddress((String)mainForm.getFld_packing_address(String.valueOf(i)));
vo.setSdms_id((String)mainForm.getFld_packing_sdmsId(String.valueOf(i)));
vo.setPacking_region_id((String)mainForm.getFld_packing_regionId(String.valueOf(i)));
vo.setProvince_id((String)mainForm.getFld_packing_provinceId(String.valueOf(i)));
vo.setProvince_name((String)mainForm.getFld_packing_provinceName(String.valueOf(i)));
vo.setCity_id((String)mainForm.getFld_packing_cityId(String.valueOf(i)));
vo.setCity_name((String)mainForm.getFld_packing_cityName(String.valueOf(i)));
vo.setDistrict_id((String)mainForm.getFld_packing_districtId(String.valueOf(i)));
vo.setDistrict_name((String)mainForm.getFld_packing_districtName(String.valueOf(i)));
vo.setTown_id((String)mainForm.getFld_packing_townId(String.valueOf(i)));
vo.setTown_name((String)mainForm.getFld_packing_townName(String.valueOf(i)));

vo.setRef_no((String)mainForm.getFld_packing_ref_no(String.valueOf(i)));



}
}




我想知道第一个函数中的tblAddr_update(dtlList, mainForm);
是怎样更新到其中的dtlList是传地址吗?
...全文
112 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjsq0705 2012-02-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ldh911 的回复:]
这个算是比较基础的Java函数传参问题了。

如果用传统C++的方式来理解Java的话,可以认为Java的参数只有传值一种方式,但其特殊性在于:
◎ 如果参数是个基础类型(int之类),那么就是数值本身;
◎ 如果参数是个对象类型(String等),那么传递的值,是指该对象的地址。
[/Quote]

看到这光头总有一种亲切感
Sky牟天 2012-02-02
  • 打赏
  • 举报
回复
java传递参数两种形式:
1.基本类型。值传递,就是赋值,把变量的值赋给函数的参数。
2.对象类型。引用,变量和函数的参数都引用的同一个对象。
在引用的情况下,在函数里面修改了参数的值,就等同于修改了原对象。
简单的例子:


public void func()
{
/*比如说MyObject有一个成员变量叫value,int类型*/
MyObject origin = new MyObject();
origin.setValue(5);
System.out.println("value is " + origin.getValue());//value is 5
MyObject ref = origin;//变量ref得到原对象origin的引用
ref.setValue(3);
System.out.println("value is " + origin.getValue());//value is 3
/*作为函数参数的情况亦如此*/
}
gukuitian 2012-02-01
  • 打赏
  • 举报
回复
参数可看做是某对像地址的一个副本,
当你方法中直接操作该参数,就修改了原数据,
若是对它重新赋值,就和原来的无关。
weiweipxb 2012-02-01
  • 打赏
  • 举报
回复
谢谢 1楼.
MiceRice 2012-02-01
  • 打赏
  • 举报
回复
这个算是比较基础的Java函数传参问题了。

如果用传统C++的方式来理解Java的话,可以认为Java的参数只有传值一种方式,但其特殊性在于:
◎ 如果参数是个基础类型(int之类),那么就是数值本身;
◎ 如果参数是个对象类型(String等),那么传递的值,是指该对象的地址。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧