Am 13.07.2012 um 01:20 schrieb Ramsey Gurley: > > On Jul 12, 2012, at 3:26 PM, Maik Musall wrote: > >> >> Am 12.07.2012 um 23:58 schrieb Louis Demers: >>> User newUser = (User)EOUtilities.createAndInsertInstance(ec, >>> User.ENTITY_NAME) ; >> >> Much too wordy for my taste, and needs a cast on top of it. Just add a >> second constructor in your template which does ec.insertObject(this), so >> that you can simply use >> >> User newUser = new User( ec ); >> >> Do not delete the parameter-less constructor though, because EOF needs that >> internally when restoring objects from db. But refrain from using that >> anywhere in your app. >> >> Maik > > I know the rule is not followed strictly in WO/Wonder, but as a general rule > in java, do not let 'this' escape the constructor. > > http://www.javapractices.com/topic/TopicAction.do?Id=252
Indeed, you're right. Using a factory method is the better way. I just looked into what insertObject() actually does and it's really more than you would want to happen inside a constructor, although I never had a problem with this in years. Still, I'd make a factory method in the template to be called like User newUser = User.newInEc( ec ); Side note: javapractices.com is good, but not infallible. For example, it is badly misguided about spaces instead of tabs... ;-) (http://www.javapractices.com/topic/TopicAction.do?Id=244) Maik _______________________________________________ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com