Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #22254

Re: Design Patterns

X-Received by 10.224.176.196 with SMTP id bf4mr5769538qab.4.1360437018721; Sat, 09 Feb 2013 11:10:18 -0800 (PST)
X-Received by 10.49.95.68 with SMTP id di4mr729725qeb.0.1360437018703; Sat, 09 Feb 2013 11:10:18 -0800 (PST)
Path csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!news.glorb.com!p13no5164573qai.0!news-out.google.com!k2ni21154qap.0!nntp.google.com!p13no5164568qai.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups comp.lang.java.programmer
Date Sat, 9 Feb 2013 11:10:18 -0800 (PST)
In-Reply-To <5115d723$0$295$14726298@news.sunsite.dk>
Complaints-To groups-abuse@google.com
Injection-Info glegroupsg2000goo.googlegroups.com; posting-host=173.164.137.214; posting-account=CP-lKQoAAAAGtB5diOuGlDQk0jIwmH0T
NNTP-Posting-Host 173.164.137.214
References <3c0d69c3-591d-4d99-8c13-30a0fd1684b3@googlegroups.com> <510db1c3$0$282$14726298@news.sunsite.dk> <510ea3f6$0$9502$9b4e6d93@newsspool1.arcor-online.net> <5115d723$0$295$14726298@news.sunsite.dk>
User-Agent G2/1.0
MIME-Version 1.0
Message-ID <6eb80ab4-30fb-4137-b7e0-1dcca2ca7fbc@googlegroups.com> (permalink)
Subject Re: Design Patterns
From Lew <lewbloch@gmail.com>
Injection-Date Sat, 09 Feb 2013 19:10:18 +0000
Content-Type text/plain; charset=ISO-8859-1
Content-Transfer-Encoding quoted-printable
Xref csiph.com comp.lang.java.programmer:22254

Show key headers only | View raw


Arne Vajhøj wrote:
> A plain nested class does not have access to the local
> variables.
> 
> If that is not needed then fine.
> 
> If that is needed then it has to be either a local
> or anonymous class.

Nitpick: or inner class.

> And local classes are very rare in the real world.

Sort of. Named local classes are indeed rare. Anonymous local classes 
are rather common.

 public List<File> getFiles()
 {
   final FileFilter filter = new FileFilter() 
   {
     @Override boolean accept(File f) { return f.isDirectory(); }
   };
   // instance of an anonymous local class implementing FileFilter
   ...  
 }

This is good Java idiom because the 'FileFilter' instance is GCable when 
done. It hasn't got state so its cost is virtually nil. So the local class 
feature gives you good control of a program's memory requirements.

In less educated programmers' code I've seen such implementors scoped at 
instance or even (gasp) static member level. And then people wonder at the 
heap requirements.

Java has a funky and nuanced type structure. If you take advantage of 
the nuances you get a lot in return.

It helps to use JLS (Java Language Specification) terminology in its 
exact, narrowest framing. Really. Some call all nested classes "inner" 
classes. Nope. And anonymous classes can be member or local types. It's 
all about scope and context.

The JLS has a detailed treatment, and somewhere out there floats a 
brilliant infographic going back to 1.2-ish days, but here's a brief
taxonomy.

 top level * {public, package},
 nested {static, inner {member, local}} * {any access}

This is off the top of my head, so any corrections welcomed.

There's a lovely corner case involving

 public class Containing
 {
   private void doSomething() {...}

   public class Within extends Containing
   {
     // @Override // ?
     public void doSomething() 
     { 
       Containing.this.doSomething();
       // super.doSomething(); // ?
       ...
     }
   }
 }

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Design Patterns dougmmika@gmail.com - 2013-02-02 16:17 -0800
  Re: Design Patterns Arne Vajhøj <arne@vajhoej.dk> - 2013-02-02 19:39 -0500
    Re: Design Patterns Marcel Müller <news.5.maazl@spamgourmet.org> - 2013-02-03 18:52 +0100
      Re: Design Patterns Lew <lewbloch@gmail.com> - 2013-02-03 14:23 -0800
      Re: Design Patterns Arne Vajhøj <arne@vajhoej.dk> - 2013-02-08 23:57 -0500
        Re: Design Patterns Lew <lewbloch@gmail.com> - 2013-02-09 11:10 -0800
          Re: Design Patterns Arne Vajhøj <arne@vajhoej.dk> - 2013-02-09 19:36 -0500
            Re: Design Patterns Lew <lewbloch@gmail.com> - 2013-02-09 23:44 -0800
              Re: Design Patterns Lew <lewbloch@gmail.com> - 2013-02-09 23:47 -0800
                Re: Design Patterns "John B. Matthews" <nospam@nospam.invalid> - 2013-02-10 12:28 -0500
              Re: Design Patterns Arne Vajhøj <arne@vajhoej.dk> - 2013-02-10 13:35 -0500
              Re: Design Patterns Arne Vajhøj <arne@vajhoej.dk> - 2013-02-10 13:36 -0500
                Re: Design Patterns Lew <lewbloch@gmail.com> - 2013-02-10 23:12 -0800
          Re: Design Patterns "John B. Matthews" <nospam@nospam.invalid> - 2013-02-09 19:45 -0500
  Re: Design Patterns Arne Vajhøj <arne@vajhoej.dk> - 2013-02-02 20:17 -0500
  Re: Design Patterns Doug Mika <dougmmika@gmail.com> - 2013-02-02 19:43 -0800
    Re: Design Patterns markspace <markspace@nospam.nospam> - 2013-02-02 20:54 -0800
      Re: Design Patterns Doug Mika <dougmmika@gmail.com> - 2013-02-02 21:11 -0800
        Re: Design Patterns markspace <markspace@nospam.nospam> - 2013-02-03 08:24 -0800
          Re: Design Patterns Arne Vajhøj <arne@vajhoej.dk> - 2013-02-08 23:41 -0500
    Re: Design Patterns Lew <lewbloch@gmail.com> - 2013-02-02 21:57 -0800
  Re: Design Patterns Roedy Green <see_website@mindprod.com.invalid> - 2013-02-03 06:38 -0800
  Re: Design Patterns Joerg Meier <joergmmeier@arcor.de> - 2013-02-04 17:06 +0100
    Re: Design Patterns Lew <lewbloch@gmail.com> - 2013-02-04 12:38 -0800
    Re: Design Patterns Arne Vajhøj <arne@vajhoej.dk> - 2013-02-04 21:31 -0500
      Re: Design Patterns Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2013-02-04 21:03 -0800
        Re: Design Patterns Lew <lewbloch@gmail.com> - 2013-02-04 21:25 -0800
          Re: Design Patterns Arne Vajhøj <arne@vajhoej.dk> - 2013-02-05 19:54 -0500
            Re: Design Patterns Lew <lewbloch@gmail.com> - 2013-02-05 17:51 -0800
              Re: Design Patterns Arne Vajhøj <arne@vajhoej.dk> - 2013-02-05 20:54 -0500
        Re: Design Patterns lipska the kat <"nospam at neversurrender dot co dot uk"> - 2013-02-05 09:43 +0000
          Re: Design Patterns Lew <lewbloch@gmail.com> - 2013-02-05 13:03 -0800
            Re: Design Patterns Arne Vajhøj <arne@vajhoej.dk> - 2013-02-05 20:09 -0500
          Re: Design Patterns markspace <markspace@nospam.nospam> - 2013-02-05 13:56 -0800
            Re: Design Patterns markspace <markspace@nospam.nospam> - 2013-02-05 14:30 -0800
            Re: Design Patterns Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2013-02-05 14:33 -0800
            Re: Design Patterns lipska the kat <"nospam at neversurrender dot co dot uk"> - 2013-02-06 09:03 +0000
          Re: Design Patterns Arne Vajhøj <arne@vajhoej.dk> - 2013-02-05 20:07 -0500
      Re: Design Patterns Eric Sosman <esosman@comcast-dot-net.invalid> - 2013-02-05 09:10 -0500
        Re: Design Patterns Eric Sosman <esosman@comcast-dot-net.invalid> - 2013-02-05 13:20 -0500
          Re: Design Patterns Lew <lewbloch@gmail.com> - 2013-02-05 13:10 -0800
          Re: Design Patterns Arne Vajhøj <arne@vajhoej.dk> - 2013-02-05 20:11 -0500
      Re: Design Patterns Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2013-02-05 09:53 -0800
        Re: Design Patterns Arved Sandstrom <asandstrom2@eastlink.ca> - 2013-02-05 20:17 -0400
        Re: Design Patterns Arne Vajhøj <arne@vajhoej.dk> - 2013-02-05 19:50 -0500
      Re: Design Patterns Arne Vajhøj <arne@vajhoej.dk> - 2013-02-05 20:34 -0500
        Re: Design Patterns Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2013-02-06 08:40 -0800
          Re: Design Patterns Arne Vajhøj <arne@vajhoej.dk> - 2013-02-08 23:38 -0500
    Re: Design Patterns Arne Vajhøj <arne@vajhoej.dk> - 2013-02-04 21:41 -0500

csiph-web