Welll, Common misconception, but, technically all java calls are "by value". That is, there is no such thing in java as passing something "by reference". The hook is, the value passed in when something is an Object is actually a reference (aka a pointer) to the existing object. While you can manipulate the thing that this points to, you cannot reassign it point to something else. I got all bunged up about this also and I think it's a pretty important point that can easily be missed if you came into java from another language that allows "by reference" calls.
By saying that objects are passed "by reference" folks are actually making things more complicated than they need to be... For a really good explanation see http://www.yoda.arachsys.com/java/passing.html worse is better -----Original Message----- From: Larry Meadors [mailto:[EMAIL PROTECTED] Sent: Monday, December 01, 2003 10:52 AM To: [EMAIL PROTECTED] Subject: Re: Question regarding ActionForms. Welcome to java 101, formerly known as the struts-users mailing list. Object references are passed to method calls. While that reference cannot be changed, the object that it references can. On the other hand, if you create a new action form and assign it to the "form" parameter, nothing will happen because that reference cannot be changed. Larry >>> [EMAIL PROTECTED] 12/01/03 8:42 AM >>> Hi, I am currently using Struts 1.0.2 and have notice something with regard to handling of ActionForms. Why is it, that in the "perform()" method of my Action I am able to modify the passed-in ActionForm and all modifications that I make to the ActionForm in my Action have effect on the ActionForm in the session, without the need to reset the modified form in the session. e.g. public ActionForward peform(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response, )throws IOException, ServletException { MyForm myForm = (MyForm)form; form.setMemberA("valA"); form.setMemberB("valB"); // why dont I have to do the following: session.setAttribute ("myFormName", myForm); return "success"; } I thought that since Java passes method arguments by value and not by reference, then I would have to reset my modifed copy back into the session for changes on the form to be visible in the form in the session ? Any insights on how this mechanism works would be greatly appreciated. Thanks, Sepand --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] ----------------------------------------- This message and its contents (to include attachments) are the property of Kmart Corporation (Kmart) and may contain confidential and proprietary information. You are hereby notified that any disclosure, copying, or distribution of this message, or the taking of any action based on information contained herein is strictly prohibited. Unauthorized use of information contained herein may subject you to civil and criminal prosecution and penalties. If you are not the intended recipient, you should delete this message immediately. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]

