Path: csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder3.hal-mli.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!nx02.iad01.newshosting.com!newshosting.com!news-out.readnews.com!transit3.readnews.com!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail From: Lew Newsgroups: comp.lang.java.programmer Subject: Re: state design pattern: question: inner or outer class: which is better? Date: Wed, 30 Nov 2011 19:10:33 -0800 (PST) Organization: http://groups.google.com Lines: 42 Message-ID: <371153.148.1322709033282.JavaMail.geo-discussion-forums@prnu24> References: <4cb57cb9-f87c-4409-9e35-184bdc661f48@l24g2000yqm.googlegroups.com> <4652620.1006.1322680967944.JavaMail.geo-discussion-forums@prfi36> <40add71o90o9p31s9mo3sj468vaj12cb1k@4ax.com> <1854299.24.1322692136633.JavaMail.geo-discussion-forums@preu18> <6addd7tdm8pt96l8sda3spi13cvii3pmi6@4ax.com> Reply-To: comp.lang.java.programmer@googlegroups.com NNTP-Posting-Host: 67.218.107.93 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 X-Trace: posting.google.com 1322709033 20593 127.0.0.1 (1 Dec 2011 03:10:33 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Thu, 1 Dec 2011 03:10:33 +0000 (UTC) In-Reply-To: <6addd7tdm8pt96l8sda3spi13cvii3pmi6@4ax.com> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=67.218.107.93; posting-account=CP-lKQoAAAAGtB5diOuGlDQk0jIwmH0T User-Agent: G2/1.0 X-Google-Web-Client: true Xref: x330-a1.tempe.blueboxinc.net comp.lang.java.programmer:10395 Gene Wirchenko wrote: > Lew wrote: >> Gene Wirchenko wrote: >>> Lew wrote: >>> [snip] >>> >>>> As with non-inner nested classes, if the type is needed by any other class >>>> and its semantics are not tightly bound to those of the proposed >>>> outer class, a standalone class is probably more appropriate. >>>> >>>> If the semantics are tightly bound to the proposed outer class, and the sprite >>> state does not depend on the outer class instance's state, then a >>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >>> I do not follow this. Please explain. >>> >>> nested class might be appropriate. >> >> If an instance of the prospective nested class does not use any of the instance > state of the prospective outer class, then it should not be an inner > class, but it might be a candidate for a nested class. >> >> If it does depend on the state of the outer-class instance, for example if it > references an instance variable of the outer-class instance, then it > will have to be an inner class. This follows directly from the > inability of a static member to access an instance member. > > Thank you. It was a terminology issue. I got this from Oracle: > "Nested classes are divided into two categories: static and > non-static. Nested classes that are declared static are simply called > static nested classes. Non-static nested classes are called inner > classes." Are these the definitions that you are using? Yes. I should have said "static nested class" vs. "inner class"; thanks for the reminder. I use the definitions in the JLS, but forgot to specify "static" when I said "nested". Thanks for having me clarify and, along the way, refresh the rigor of my terminology. -- Lew