Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #2917
| Newsgroups | comp.lang.java.programmer |
|---|---|
| From | Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> |
| Subject | Re: calling own methods from constructor |
| References | <slrnippkd9.phi.avl@gamma.logic.tuwien.ac.at> <2011040622233261380-angrybaldguy@gmailcom> |
| Message-ID | <slrnipr02k.phi.avl@gamma.logic.tuwien.ac.at> (permalink) |
| Date | 2011-04-07 09:13 +0000 |
Owen Jacobson <angrybaldguy@gmail.com> wrote: > On 2011-04-06 16:48:41 -0400, Andreas Leitgeb said: > >> There is well-known danger in calling own methods from the >> constructor, namely that the method called may be overridden >> by a subclass, which is really instanciated, but whose specific >> constructor has not yet been run. >> >> I do not intend to delve into the details of static, private >> or final methods, or final'ity of the class itself (and maybe >> others) avoiding these problems, but instead I'm curious, why >> Java just doesn't simply forbid the dangerous calls. > > It's hard to prove that a constructor never calls a virtual method. Consider: > [ example of c'tor calling a private method "internalInit", which in turn > calls virtual "virtualMethod". ] Good point. The compiler couldn't (at least not statically) prevent indirect calling of overridable non-static methods. But otoh., it refuses to compile this: String bad = (String) new Integer(42); while allowing this: (sure bomb at runtime) String bad = (String) (Object) new Integer(42); So, not being able to prevent something happening indirectly, doesn't imply that the direct way would need to be allowed, too. So, it boils down to the original question of whether there is also a good use of constructors (directly or indirectly) invoking overridable virtual methods. What it "good"? I have no exact definition, but if one of the Java gurus (Brian Goetz, Joshua Bloch, James Gosling,...) ever before suggested a pattern that would involve it, then chances are good, that I'd accept it. Also, if the JSL or one of the big Java-based projects used it. Tom's example (Library) didn't convince me so far.
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar
calling own methods from constructor Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-04-06 20:48 +0000
Re: calling own methods from constructor Tom Anderson <twic@urchin.earth.li> - 2011-04-06 23:06 +0100
Re: calling own methods from constructor Lew <noone@lewscanon.com> - 2011-04-06 18:24 -0400
Re: calling own methods from constructor Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-04-07 08:44 +0000
Re: calling own methods from constructor Robert Klemme <shortcutter@googlemail.com> - 2011-04-07 04:14 -0700
Re: calling own methods from constructor Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-04-07 12:32 +0000
Re: calling own methods from constructor Robert Klemme <shortcutter@googlemail.com> - 2011-04-07 05:55 -0700
Re: calling own methods from constructor Lew <lew@lewscanon.com> - 2011-04-07 08:10 -0700
Re: calling own methods from constructor Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-04-07 20:31 +0000
Re: calling own methods from constructor Lew <lew@lewscanon.com> - 2011-04-07 14:10 -0700
Re: calling own methods from constructor Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-04-07 22:15 +0000
Re: calling own methods from constructor Lew <noone@lewscanon.com> - 2011-04-07 21:22 -0400
Re: calling own methods from constructor Tom Anderson <twic@urchin.earth.li> - 2011-04-07 23:08 +0100
Re: calling own methods from constructor Lew <noone@lewscanon.com> - 2011-04-07 21:24 -0400
Re: calling own methods from constructor "Mike Schilling" <mscottschilling@hotmail.com> - 2011-04-09 22:06 -0700
Re: calling own methods from constructor Tom Anderson <twic@urchin.earth.li> - 2011-04-07 23:10 +0100
Re: calling own methods from constructor Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-04-07 22:24 +0000
Re: calling own methods from constructor Lew <noone@lewscanon.com> - 2011-04-07 07:19 -0400
Re: calling own methods from constructor Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-04-07 12:24 +0000
Re: calling own methods from constructor Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-04-06 20:46 -0400
Re: calling own methods from constructor Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-04-07 08:36 +0000
Re: calling own methods from constructor Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-04-07 07:16 -0300
Re: calling own methods from constructor Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-04-07 11:26 +0000
Re: calling own methods from constructor Paul Cager <paul.cager@googlemail.com> - 2011-04-07 03:20 -0700
Re: calling own methods from constructor Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-04-07 11:36 +0000
Re: calling own methods from constructor Owen Jacobson <angrybaldguy@gmail.com> - 2011-04-06 22:23 -0400
Re: calling own methods from constructor Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-04-07 09:13 +0000
Re: calling own methods from constructor Tobias Blass <tobiasblass@gmx.net> - 2011-04-07 10:58 +0000
Re: calling own methods from constructor Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-04-07 12:19 +0000
Re: calling own methods from constructor Alessio Stalla <alessiostalla@gmail.com> - 2011-04-07 10:40 -0700
Re: calling own methods from constructor Tobias Blass <tobiasblass@gmx.net> - 2011-04-07 19:00 +0000
Re: calling own methods from constructor Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-04-07 20:11 +0000
Re: calling own methods from constructor Jim Janney <jjanney@shell.xmission.com> - 2011-04-07 14:36 -0600
Re: calling own methods from constructor Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-04-07 20:59 -0400
Re: calling own methods from constructor Jim Janney <jjanney@shell.xmission.com> - 2011-04-07 10:26 -0600
Re: calling own methods from constructor Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-04-07 20:16 +0000
Re: calling own methods from constructor Lew <lew@lewscanon.com> - 2011-04-07 14:05 -0700
Re: calling own methods from constructor Jim Janney <jjanney@shell.xmission.com> - 2011-04-07 16:15 -0600
Re: calling own methods from constructor Lew <noone@lewscanon.com> - 2011-04-07 21:28 -0400
Re: calling own methods from constructor Owen Jacobson <angrybaldguy@gmail.com> - 2011-04-07 23:21 -0400
Re: calling own methods from constructor Owen Jacobson <angrybaldguy@gmail.com> - 2011-04-07 23:39 -0400
Re: calling own methods from constructor Owen Jacobson <angrybaldguy@gmail.com> - 2011-04-07 23:58 -0400
Re: calling own methods from constructor Tom Anderson <twic@urchin.earth.li> - 2011-04-08 20:32 +0100
Re: calling own methods from constructor Tom Anderson <twic@urchin.earth.li> - 2011-04-07 23:05 +0100
Re: calling own methods from constructor Jim Janney <jjanney@shell.xmission.com> - 2011-04-07 17:38 -0600
Re: calling own methods from constructor Roedy Green <see_website@mindprod.com.invalid> - 2011-04-07 03:20 -0700
Re: calling own methods from constructor Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-04-07 11:32 +0000
Re: calling own methods from constructor Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2011-04-08 01:51 +0200
Re: calling own methods from constructor Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2011-04-08 01:56 +0200
Re: calling own methods from constructor Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-04-08 09:30 +0000
Re: calling own methods from constructor Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2011-04-08 20:02 +0200
csiph-web