Map as a return value? 2004-01-27 - By Erik Beijnoff
Back Pardon me if you find this question to common to fit into the j2ee category.
I suppose this question is impossible to answer with a simple yes or no, but I'm looking for standard practices when an object deals with collections as return values from a method invocation.
Say that I call some getParameters() method on some object that returns a Map of parameters. Should the Map be copied before it is returned so that the calling object can't affect the original Map, or should the Map be returned by reference?
My spontaneous feeling is that the object shouldn't spill it's internal guts around, so the Map should really be a copy of the other Map, but what about performance if you have to create and recreate copies of all Maps that gets passed around the system?
What are the situations where it is acceptable, or even wanted for an object to return a shared Map? Or do you find it acceptable, from a performance point of view to hand out the Map as long as you "know" that you will only read the Map?
I know that there are different situation where different rules apply, of course, but what I'm looking for is what these different situations really are. I've found my self contemplating this implementation detail quite often recently, and often tended to go with the shared object approach, propably out of scare to affect performance.
Regards Erik Beijnoff
=========================================================================== To unsubscribe, send email to listserv@(protected) and include in the body of the message "signoff J2EE-INTEREST". For general help, send email to listserv@(protected) and include in the body of the message "help".
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD><TITLE>Meddelande</TITLE> <META http-equiv=Content-Type content="text/html; charset=us-ascii"> <META content="MSHTML 6.00.2800.1276" name=GENERATOR></HEAD> <BODY> <DIV><FONT face=Arial size=2><SPAN class=757104809-27012004>Pardon me if you find this question to common to fit into the j2ee category.</SPAN></FONT></DIV> <DIV><FONT face=Arial size=2><SPAN class=757104809-27012004></SPAN></FONT> </DIV> <DIV><FONT face=Arial size=2><SPAN class=757104809-27012004>I suppose this question is impossible to answer with a simple yes or no, but I'm looking for standard practices when an object deals with collections as return values from a method invocation.</SPAN></FONT></DIV> <DIV><FONT face=Arial size=2><SPAN class=757104809-27012004></SPAN></FONT> </DIV> <DIV><FONT face=Arial size=2><SPAN class=757104809-27012004>Say that I call some getParameters() method on some object that returns a Map of parameters. Should the Map be copied before it is returned so that the calling object can't affect the original Map, or should the Map be returned by reference?</SPAN></FONT></DIV> <DIV><FONT face=Arial size=2><SPAN class=757104809-27012004></SPAN></FONT> </DIV> <DIV><FONT face=Arial size=2><SPAN class=757104809-27012004>My spontaneous feeling is that the object shouldn't spill it's internal guts around, so the Map should really be a copy of the other Map, but what about performance if you have to create and recreate copies of all Maps that gets passed around the system?</SPAN></FONT></DIV> <DIV><FONT face=Arial size=2><SPAN class=757104809-27012004></SPAN></FONT> </DIV> <DIV><FONT face=Arial size=2><SPAN class=757104809-27012004>What are the situations where it is acceptable, or even wanted for an object to return a shared Map? Or do you find it acceptable, from a performance point of view to hand out the Map as long as you "know" that you will only read the Map?</SPAN></FONT></DIV> <DIV><FONT face=Arial size=2><SPAN class=757104809-27012004></SPAN></FONT> </DIV> <DIV><FONT face=Arial size=2><SPAN class=757104809-27012004>I know that there are different situation where different rules apply, of course, but what I'm looking for is what these different situations really are. I've found my self contemplating this implementation detail quite often recently, and often tended to go with the shared object approach, propably out of scare to affect performance. </SPAN></FONT></DIV> <DIV><FONT face=Arial size=2><SPAN class=757104809-27012004></SPAN></FONT> </DIV> <DIV><FONT face=Arial size=2><SPAN class=757104809-27012004>Regards Erik Beijnoff</SPAN></FONT></DIV></BODY></HTML> =========================================================================== To unsubscribe, send email to listserv@(protected) and include in the body of the message "signoff J2EE-INTEREST". For general help, send email to listserv@(protected) and include in the body of the message "help". <p>
|
|