<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-9182705499898252496.post6309360195145955862..comments</id><updated>2009-06-13T23:53:37.515-04:00</updated><category term='web'/><category term='bugs'/><category term='books'/><category term='interesting'/><category term='dotted-tail'/><category term='fermat'/><category term='pmd'/><category term='practice'/><category term='carroll'/><category term='css'/><category term='perfect numbers'/><category term='probability'/><category term='c++'/><category term='float'/><category term='bias'/><category term='integral'/><category term='simulation'/><category term='scheme'/><category term='halloween'/><category term='table'/><category term='snippets'/><category term='reading'/><category term='visualization'/><category term='big-o'/><category term='threads'/><category term='dvorak'/><category term='java'/><category term='double'/><category term='logic'/><category term='security'/><category term='fractals'/><category term='schneier'/><category term='coin toss'/><category term='links'/><category term='fibonacci'/><category term='misc'/><category term='c'/><category term='geometry'/><category term='pair programming'/><category term='algebra'/><category term='goldbach'/><category term='html'/><category term='vectors'/><category term='puzzles'/><category term='qwerty'/><category term='mersenne'/><category term='statistics'/><category term='testing'/><category term='chess'/><category term='crypto'/><category term='24'/><category term='horner'/><category term='randomness'/><category term='statitstics'/><category term='curiosity'/><category term='answers'/><category term='education'/><category term='technology'/><category term='blog spam'/><category term='benford'/><category term='cout'/><category term='pi'/><category term='lists'/><category term='conway'/><category term='map'/><category term='solutions'/><category term='data visualization'/><category term='unsolved'/><category term='python'/><category term='trees'/><category term='blowfish'/><category term='windows'/><category term='sicp'/><category term='productivity'/><category term='learning'/><category term='usability'/><category term='science'/><category term='gauss'/><category term='golden ratio'/><category term='math'/><category term='dodgson'/><category term='programming'/><category term='experience'/><category term='calculus'/><category term='CSV'/><category term='precision'/><category term='simpson'/><category term='letter frequency'/><category term='hints'/><category term='netbeans'/><category term='proof'/><category term='time'/><category term='sequences'/><category term='pascal'/><category term='primes'/><category term='captcha'/><category term='hello world'/><category term='data structures'/><category term='matrix'/><category term='euler'/><category term='exercises'/><category term='languages'/><category term='miller-rabin'/><category term='quotes'/><category term='gambling'/><category term='chaos'/><category term='numbers'/><category term='equals'/><category term='questions'/><category term='sets'/><title type='text'>Comments on Bill the Lizard: A Java Puzzler</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.billthelizard.com/feeds/6309360195145955862/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9182705499898252496/6309360195145955862/comments/default'/><link rel='alternate' type='text/html' href='http://www.billthelizard.com/2009/06/java-puzzler.html'/><author><name>Bill the Lizard</name><uri>http://www.blogger.com/profile/09810099093752485841</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_PnLYRqe0k9g/SKywgF43rhI/AAAAAAAAAAQ/0l6VoF8jG0M/S220/lizard-icon.jpeg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9182705499898252496.post-7776926185579550088</id><published>2009-06-13T23:53:37.515-04:00</published><updated>2009-06-13T23:53:37.515-04:00</updated><title type='text'>William,
I said that the Base constructor calls pr...</title><content type='html'>William,&lt;br /&gt;I said that the Base constructor calls preProcess(), not that it calls its &lt;i&gt;own&lt;/i&gt; preProcess().  The one that gets exectuted is the one in the Derived class.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9182705499898252496/6309360195145955862/comments/default/7776926185579550088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9182705499898252496/6309360195145955862/comments/default/7776926185579550088'/><link rel='alternate' type='text/html' href='http://www.billthelizard.com/2009/06/java-puzzler.html?showComment=1244951617515#c7776926185579550088' title=''/><author><name>Bill the Lizard</name><uri>http://www.blogger.com/profile/09810099093752485841</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_PnLYRqe0k9g/SKywgF43rhI/AAAAAAAAAAQ/0l6VoF8jG0M/S220/lizard-icon.jpeg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.billthelizard.com/2009/06/java-puzzler.html' ref='tag:blogger.com,1999:blog-9182705499898252496.post-6309360195145955862' source='http://www.blogger.com/feeds/9182705499898252496/posts/default/6309360195145955862' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-743262253'/></entry><entry><id>tag:blogger.com,1999:blog-9182705499898252496.post-3188024267921131499</id><published>2009-06-13T21:51:53.134-04:00</published><updated>2009-06-13T21:51:53.134-04:00</updated><title type='text'>The sequence of events isn&amp;#39;t quite right. I ju...</title><content type='html'>The sequence of events isn&amp;#39;t quite right. I just created a version of this program that used a custom class I made instead of String for the data member so I could print a line when it was created. The sequence is:&lt;br /&gt;&lt;br /&gt;1. Base constructor&lt;br /&gt;2. Derived preProcess (NOT the Base preProcess). This is confirmed by both a print statement in the preProcess() method and the data member&amp;#39;s class;&lt;br /&gt;3. Base constructor end;&lt;br /&gt;4. Derived&amp;#39;s data member initializer, which overwrites the previously set value.&lt;br /&gt;&lt;br /&gt;Try it.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9182705499898252496/6309360195145955862/comments/default/3188024267921131499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9182705499898252496/6309360195145955862/comments/default/3188024267921131499'/><link rel='alternate' type='text/html' href='http://www.billthelizard.com/2009/06/java-puzzler.html?showComment=1244944313134#c3188024267921131499' title=''/><author><name>William Shields</name><uri>http://www.blogger.com/profile/18356811199950883367</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.billthelizard.com/2009/06/java-puzzler.html' ref='tag:blogger.com,1999:blog-9182705499898252496.post-6309360195145955862' source='http://www.blogger.com/feeds/9182705499898252496/posts/default/6309360195145955862' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2105219516'/></entry><entry><id>tag:blogger.com,1999:blog-9182705499898252496.post-3408654026145511379</id><published>2009-06-09T12:30:37.042-04:00</published><updated>2009-06-09T12:30:37.042-04:00</updated><title type='text'>Aaron,
I&amp;#39;m glad you pointed out this not-so-su...</title><content type='html'>Aaron,&lt;br /&gt;I&amp;#39;m glad you pointed out this not-so-subtle difference between C++ and Java.  Every method in Java is virtual unless you specify otherwise (by explicitly declaring it final).  This is a convenience most of the time, but as you said, it bites you here.&lt;br /&gt;&lt;br /&gt;This comment also reminded me that this was discussed briefly in Josh Bloch&amp;#39;s Effective Java.  In the chapter titled &amp;quot;Design and document for inheritance or else prohibit it&amp;quot; (chapter 15 in the 1st ed., the only one I have with me), Bloch states that &amp;quot;Constructors must not invoke overridable methods, directly or indirectly.&amp;quot;  He then goes on to explain that unexpected behavior may result.&lt;br /&gt;&lt;br /&gt;This does seem like it calls for at least a warning from the compiler.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9182705499898252496/6309360195145955862/comments/default/3408654026145511379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9182705499898252496/6309360195145955862/comments/default/3408654026145511379'/><link rel='alternate' type='text/html' href='http://www.billthelizard.com/2009/06/java-puzzler.html?showComment=1244565037042#c3408654026145511379' title=''/><author><name>Bill the Lizard</name><uri>http://www.blogger.com/profile/09810099093752485841</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_PnLYRqe0k9g/SKywgF43rhI/AAAAAAAAAAQ/0l6VoF8jG0M/S220/lizard-icon.jpeg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.billthelizard.com/2009/06/java-puzzler.html' ref='tag:blogger.com,1999:blog-9182705499898252496.post-6309360195145955862' source='http://www.blogger.com/feeds/9182705499898252496/posts/default/6309360195145955862' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-743262253'/></entry><entry><id>tag:blogger.com,1999:blog-9182705499898252496.post-4857923491233489059</id><published>2009-06-09T12:04:29.787-04:00</published><updated>2009-06-09T12:04:29.787-04:00</updated><title type='text'>@nicolaslara
re &amp;quot;bad design&amp;quot;, I&amp;#39;d ch...</title><content type='html'>@nicolaslara&lt;br /&gt;re &amp;quot;bad design&amp;quot;, I&amp;#39;d characterize it as _different_ design.  C++ chooses the route that base classes construct entirely before derived classes -- that the object isn&amp;#39;t even a &amp;quot;derived&amp;quot; instance until the base ctor completes.  as a consequence, calling &amp;#39;preProcess&amp;#39; from the base cannot invoke derived::preProcess, because it &amp;quot;doesn&amp;#39;t exist yet&amp;quot;.  Java follows the simpler implementation route, probably as a natural consequence of how its runtime typing works using tagging instead of vtables -- tags aren&amp;#39;t allowed to change, so to get the C++ behavior they&amp;#39;d need to add another integer field somewhere, perhaps to each object instance, to track where in the construction process they are.  That would be a waste for such an edge case.  So (i assume) they took a calculated risk and changed how construction and virtual dispatch take place.&lt;br /&gt;&lt;br /&gt;Of course, the _real_ question is, given all this, why don&amp;#39;t they have some sort of warning when a constructor calls a virtual method?  Here, the virtual default comes back to bite you.  If there really is an override somewhere in the inheritance tree, calling it from the constructor is probably broken.&lt;br /&gt;&lt;br /&gt;(I know it&amp;#39;s idiomatic in Java to use virtual methods to allow a derived class to customize base constructor behavior -- of course, constructor parameters can do that too.  Perhaps we consider using those more often, and mark functions used by constructors as sealed.  I think everyone knows how function argument passing is supposed to work by now)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9182705499898252496/6309360195145955862/comments/default/4857923491233489059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9182705499898252496/6309360195145955862/comments/default/4857923491233489059'/><link rel='alternate' type='text/html' href='http://www.billthelizard.com/2009/06/java-puzzler.html?showComment=1244563469787#c4857923491233489059' title=''/><author><name>Aaron</name><uri>http://www.blogger.com/profile/10658555678500278995</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.billthelizard.com/2009/06/java-puzzler.html' ref='tag:blogger.com,1999:blog-9182705499898252496.post-6309360195145955862' source='http://www.blogger.com/feeds/9182705499898252496/posts/default/6309360195145955862' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1646621127'/></entry><entry><id>tag:blogger.com,1999:blog-9182705499898252496.post-5797596612452769724</id><published>2009-06-09T11:53:39.416-04:00</published><updated>2009-06-09T11:53:39.416-04:00</updated><title type='text'>Weeble,
No need to apologize, you didn&amp;#39;t sound...</title><content type='html'>Weeble,&lt;br /&gt;No need to apologize, you didn&amp;#39;t sound gruff to me at all, plus you made this post better.  I like it when people point out my mistakes because that&amp;#39;s how I learn new things.&lt;br /&gt;&lt;br /&gt;Good point about accessing other instance fields in initializers.  I hadn&amp;#39;t realized that C# behaved differently.&lt;br /&gt;&lt;br /&gt;Thank you, I really appreciate your comments.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9182705499898252496/6309360195145955862/comments/default/5797596612452769724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9182705499898252496/6309360195145955862/comments/default/5797596612452769724'/><link rel='alternate' type='text/html' href='http://www.billthelizard.com/2009/06/java-puzzler.html?showComment=1244562819416#c5797596612452769724' title=''/><author><name>Bill the Lizard</name><uri>http://www.blogger.com/profile/09810099093752485841</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_PnLYRqe0k9g/SKywgF43rhI/AAAAAAAAAAQ/0l6VoF8jG0M/S220/lizard-icon.jpeg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.billthelizard.com/2009/06/java-puzzler.html' ref='tag:blogger.com,1999:blog-9182705499898252496.post-6309360195145955862' source='http://www.blogger.com/feeds/9182705499898252496/posts/default/6309360195145955862' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-743262253'/></entry><entry><id>tag:blogger.com,1999:blog-9182705499898252496.post-2424635728661064894</id><published>2009-06-09T11:30:31.956-04:00</published><updated>2009-06-09T11:30:31.956-04:00</updated><title type='text'>Sorry, I realise now I sounded a bit gruff in my r...</title><content type='html'>Sorry, I realise now I sounded a bit gruff in my response. I was just in a bit of a hurry.&lt;br /&gt;&lt;br /&gt;It is a confusing little corner of the language. I think it behaves in this strange way because Java lets you access other instance fields in a field initializer, and thus it has to make sure the base class constructor has been executed before the initializers can be evaluated. C# behaves more intuitively (at least to me), but doesn&amp;#39;t allow you to access instance fields/methods from a field initializer.&lt;br /&gt;&lt;br /&gt;I should point out I&amp;#39;m no Java expert. I mostly do C#. I might be wrong.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9182705499898252496/6309360195145955862/comments/default/2424635728661064894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9182705499898252496/6309360195145955862/comments/default/2424635728661064894'/><link rel='alternate' type='text/html' href='http://www.billthelizard.com/2009/06/java-puzzler.html?showComment=1244561431956#c2424635728661064894' title=''/><author><name>Weeble</name><uri>http://www.blogger.com/profile/14430249240219688811</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_dk3zDKAxcms/SSNCyyTSyMI/AAAAAAAAAk4/NZ-mjjejsPc/S220/weeble.png'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.billthelizard.com/2009/06/java-puzzler.html' ref='tag:blogger.com,1999:blog-9182705499898252496.post-6309360195145955862' source='http://www.blogger.com/feeds/9182705499898252496/posts/default/6309360195145955862' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2145067393'/></entry><entry><id>tag:blogger.com,1999:blog-9182705499898252496.post-858892295575068474</id><published>2009-06-09T10:32:13.158-04:00</published><updated>2009-06-09T10:32:13.158-04:00</updated><title type='text'>Weeble,
Thanks for catching that. Of course the me...</title><content type='html'>Weeble,&lt;br /&gt;Thanks for catching that. Of course the methods are a part of the class, so they aren&amp;#39;t really defined at run time, but my point was that they already exist before any code in the constructor is executed. I was trying to make that a little bit simpler conceptually, but as you pointed out, I failed at that. The method just existing as a part of the class definition is simpler, so I took it out of my description. I corrected the mistake and tried to make it more descriptive of what actually happens at run time.&lt;br /&gt;&lt;br /&gt;Thanks also for pointing out the relevant part of the Java specification that deals with this puzzle. I had looked for it and gave up when I didn&amp;#39;t find it in chapter 8 on Classes.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9182705499898252496/6309360195145955862/comments/default/858892295575068474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9182705499898252496/6309360195145955862/comments/default/858892295575068474'/><link rel='alternate' type='text/html' href='http://www.billthelizard.com/2009/06/java-puzzler.html?showComment=1244557933158#c858892295575068474' title=''/><author><name>Bill the Lizard</name><uri>http://www.blogger.com/profile/09810099093752485841</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_PnLYRqe0k9g/SKywgF43rhI/AAAAAAAAAAQ/0l6VoF8jG0M/S220/lizard-icon.jpeg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.billthelizard.com/2009/06/java-puzzler.html' ref='tag:blogger.com,1999:blog-9182705499898252496.post-6309360195145955862' source='http://www.blogger.com/feeds/9182705499898252496/posts/default/6309360195145955862' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-743262253'/></entry><entry><id>tag:blogger.com,1999:blog-9182705499898252496.post-8723262318780182478</id><published>2009-06-09T09:53:39.115-04:00</published><updated>2009-06-09T09:53:39.115-04:00</updated><title type='text'>I don&amp;#39;t agree with this description of the fir...</title><content type='html'>I don&amp;#39;t agree with this description of the first step of the construction process: &amp;quot;The Derived constructor is called (member variables are declared, methods defined).&amp;quot;&lt;br /&gt;&lt;br /&gt;Declaration and definition are compile-time concepts, not run-time concepts. Nothing at all is done with methods at instance construction (the instance doesn&amp;#39;t acquire new instances of each method, for example) and what happens with member variables is that *before* the constructor is invoked memory is reserved for them and set to their default values. See the specification here:&lt;br /&gt;&lt;br /&gt;http://java.sun.com/docs/books/jls/third_edition/html/execution.html#12.5&lt;br /&gt;&lt;br /&gt;&amp;quot;Whenever a new class instance is created, memory space is allocated for it with room for all the instance variables [...] All the instance variables in the new object, including those declared in superclasses, are initialized to their default values (§4.12.5).&amp;quot;&lt;br /&gt;&lt;br /&gt;There follows a section describing how the constructors are invoked and that explicitly states that initializers are run after base class constructors are invoked.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9182705499898252496/6309360195145955862/comments/default/8723262318780182478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9182705499898252496/6309360195145955862/comments/default/8723262318780182478'/><link rel='alternate' type='text/html' href='http://www.billthelizard.com/2009/06/java-puzzler.html?showComment=1244555619115#c8723262318780182478' title=''/><author><name>Weeble</name><uri>http://www.blogger.com/profile/14430249240219688811</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_dk3zDKAxcms/SSNCyyTSyMI/AAAAAAAAAk4/NZ-mjjejsPc/S220/weeble.png'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.billthelizard.com/2009/06/java-puzzler.html' ref='tag:blogger.com,1999:blog-9182705499898252496.post-6309360195145955862' source='http://www.blogger.com/feeds/9182705499898252496/posts/default/6309360195145955862' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2145067393'/></entry><entry><id>tag:blogger.com,1999:blog-9182705499898252496.post-7369279187592309999</id><published>2009-06-09T08:09:29.074-04:00</published><updated>2009-06-09T08:09:29.074-04:00</updated><title type='text'>Nicolas,
Good point.  Many languages have these co...</title><content type='html'>Nicolas,&lt;br /&gt;Good point.  Many languages have these corner cases that you have to watch out for, but that doesn&amp;#39;t exonerate Java for having so many of them.  C++ and Perl are two other languages whose syntax make it notoriously easy to shoot yourself in the foot.  I know a lot of people are moving towards languages like Ruby and Lisp, at least in part because the simple syntax of those languages cut down on the number of &amp;quot;gotchas&amp;quot; you have to look out for.  There is a benefit to having only one right way to do something.  Do tools like PMD and Checkstyle even exist for Lisp?&lt;br /&gt;&lt;br /&gt;When discussing this particular puzzler with my co-workers, we decided that it did seem like a rather questionable choice to have the initialization &lt;i&gt;after&lt;/i&gt; any constructor code had run.&lt;br /&gt;&lt;br /&gt;Thanks for commenting, and for reading.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9182705499898252496/6309360195145955862/comments/default/7369279187592309999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9182705499898252496/6309360195145955862/comments/default/7369279187592309999'/><link rel='alternate' type='text/html' href='http://www.billthelizard.com/2009/06/java-puzzler.html?showComment=1244549369074#c7369279187592309999' title=''/><author><name>Bill the Lizard</name><uri>http://www.blogger.com/profile/09810099093752485841</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_PnLYRqe0k9g/SKywgF43rhI/AAAAAAAAAAQ/0l6VoF8jG0M/S220/lizard-icon.jpeg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.billthelizard.com/2009/06/java-puzzler.html' ref='tag:blogger.com,1999:blog-9182705499898252496.post-6309360195145955862' source='http://www.blogger.com/feeds/9182705499898252496/posts/default/6309360195145955862' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-743262253'/></entry><entry><id>tag:blogger.com,1999:blog-9182705499898252496.post-3921474941282298821</id><published>2009-06-09T01:24:33.908-04:00</published><updated>2009-06-09T01:24:33.908-04:00</updated><title type='text'>One thing I dislike about Java is that puzzlers li...</title><content type='html'>One thing I dislike about Java is that puzzlers like this one (that defy intuition) seem to appear more often than not. Are they corner cases or is it just poor design? Personally, I&amp;#39;m not sure what to think (and don&amp;#39;t have the Java-fu to make that decision and much less to make such a claim)&lt;br /&gt;Great post, however! Keep on the good work =)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9182705499898252496/6309360195145955862/comments/default/3921474941282298821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9182705499898252496/6309360195145955862/comments/default/3921474941282298821'/><link rel='alternate' type='text/html' href='http://www.billthelizard.com/2009/06/java-puzzler.html?showComment=1244525073908#c3921474941282298821' title=''/><author><name>nicolaslara</name><uri>http://www.blogger.com/profile/15167966852380794888</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_XqjPnbJMpfM/SUfjJhuXRyI/AAAAAAAAA2Y/on8A9oXbkB4/S220/me3-msn.png'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.billthelizard.com/2009/06/java-puzzler.html' ref='tag:blogger.com,1999:blog-9182705499898252496.post-6309360195145955862' source='http://www.blogger.com/feeds/9182705499898252496/posts/default/6309360195145955862' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1013731284'/></entry></feed>
