Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #5772

Re: Automatic linking of related objects in constructor

From Lew <noone@lewscanon.com>
Newsgroups comp.lang.java.programmer
Subject Re: Automatic linking of related objects in constructor
Date 2011-06-29 07:28 -0400
Organization albasani.net
Message-ID <iuf27u$3ne$1@news.albasani.net> (permalink)
References <eYKdnUijTfibapfTnZ2dnUVZ_uadnZ2d@westnet.com.au>

Show all headers | View raw


Qu0ll wrote:
> Suppose you have class A which contains a list of objects of class B and that
> the constructor for B takes in a reference to the A object which is to include
> it in said list. Is it safe to make a call to A's method addB(B b) in that B
> constructor passing in "this"? I have heard that it's bad practice to "leak" a
> reference to an object from within its own constructor because it may be in an
> invalid state.
>
> If not, how else can I automatically add the B object to the list in A without
> forcing the client programmer to explicitly call addB() given that they have
> already passed in the B as an argument?

I would have 'A' call its own 'addB( theB )' just after calling 'new B()':

   public class A
   {
     private List<B> daBs = ...;

     public void theMethod()
     {
       daBs.add( new B(this) );
       ...
     }
   }

No leakage.  The add occurs after construction of the 'B' finishes.  You are 
correct to worry about leakage.  The idiom shown here guarantees that 'B' has 
its everything done before the list addition can occur.

-- 
Lew
Honi soit qui mal y pense.
http://upload.wikimedia.org/wikipedia/commons/c/cf/Friz.jpg

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Automatic linking of related objects in constructor "Qu0ll" <Qu0llSixFour@gmail.com> - 2011-06-29 19:56 +1000
  Re: Automatic linking of related objects in constructor "Qu0ll" <Qu0llSixFour@gmail.com> - 2011-06-29 19:58 +1000
  Re: Automatic linking of related objects in constructor Lew <noone@lewscanon.com> - 2011-06-29 07:28 -0400
  Re: Automatic linking of related objects in constructor Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-06-29 08:29 -0400
    Re: Automatic linking of related objects in constructor Tom Anderson <twic@urchin.earth.li> - 2011-06-30 22:51 +0100
      Re: Automatic linking of related objects in constructor supercalifragilisticexpialadiamaticonormalizeringelimatisticantations <supercalifragilisticexpialadiamaticonormalizeringelimatisticantations@averylongandannoyingdomainname.com> - 2011-06-30 18:23 -0400
  Re: Automatic linking of related objects in constructor markspace <-@.> - 2011-06-29 09:17 -0700
  Re: Automatic linking of related objects in constructor supercalifragilisticexpialadiamaticonormalizeringelimatisticantations <supercalifragilisticexpialadiamaticonormalizeringelimatisticantations@averylongandannoyingdomainname.com> - 2011-06-29 19:58 -0400

csiph-web