that sb: final protected Eye getEye(){return eye;}
jweekend wrote: > > Probably right. > > In the example below, some may argue that the javadoc (here aimed at > sub-classers) on the parent class' constructor could say (as loudly as > possible, but probably never quite loudly enough) that doStuff() is called > before all state is fully initialised (in this case, eye is still null) > ie sub-classers over-riding doStuff() must be aware that getEye() will > return null during initialisation (construction) if called in the > over-riding doStuff() implementation. However, in java, sub-classers can't > be forced to pay any attention to this. > > I agree that this variant of the "template method pattern" (for java > constructors) is at best dangerous: sub-classers are almost invited to try > to do stuff that their state may not yet be initialised for; > eg: if the over-ridden method (which is the implementation that will > actually be run by the super-class' constructor - as in polymorphism) > tries to use inherited state. > > Here's an example for anyone who is still wondering what all the fuss is > about: > > public class Parent{ > private Eye eye; > public Parent{ > doStuff(); > eye = new Eye("black"); > } > protected void doStuff(){ // consider marking this final > // do some stuff > } > final protected void getEye(){return eye;} > } > > class Child extends Parent{ > // for illustration; explicitly declared (and explicitly calls super() > ) > public Child(){ > super(); // will throw an NPE (in doStuff() ); eye is not > initialised yet > } > public void doStuff(){ > super.doStuff(); // nice try, but doesn't help here > getEye().getColour(); // getEye() will return null when called by > Parent's constructor > } > } > > Regards - Cemal > http://jWeekend.co.uk jWeekend.co.uk > > > > igor.vaynberg wrote: >> >> On 11/3/07, Al Maw <[EMAIL PROTECTED]> wrote: >>> There's nothing to stop you making your constructor call methods to >>> initialise things that people can then override. >> >> erm. really? while there is nothing stopping you, you clearly shouldnt... >> >> -igor >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> >> > > -- View this message in context: http://www.nabble.com/Jira-issue-moved-to-the-list%3A-constructors-and-init-of-components-tf4743674.html#a13569202 Sent from the Wicket - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]