Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / May 2007

Tip: Looking for answers? Try searching our database.

Is this a local anonymous class or a member anonymous class

Thread view: 
Reporter - 12 May 2007 01:17 GMT
I read that an anonymous class is an unnamed local class.

However, in the example below, I have created what I believe to be an
anonymous class that is a member class, not a local class.  Anyone
want to comment?

package anonymousexample3a;

public class Main {

   ClassA anonB_Object = new ClassA("Hello" ) {
       // The original Display Method
       public void Display(){
           System.out.println("Inherited Anonymous Overridden MEMBER
Display ClassA Output:"+Message);
       }
   };

   public Main() {
       ClassA classA_Object = new ClassA("Hello");

       // Display the Anonymouse Version
       classA_Object.Display();

       ClassA anonA_Object = new ClassA("Hello" ) {
           // The original Display Method
           public void Display(){
               System.out.println("Inherited Anonymous Overridden
LOCAL Display ClassA Output:"+Message);
           }
       };

       // Display the Anonymouse Class Based on ClassA
       anonA_Object.Display();

       anonB_Object.Display();
   }

   public static void main(String[] args) {
       Main example = new Main();

   }
}

class ClassA {
   String Message = "";
   public ClassA(String aMessage){
       Message = aMessage;
   }

   // The original Display Method
   public void Display(){
       System.out.println("Basic ClassA Output:"+Message);
   }

}
Esmond Pitt - 12 May 2007 01:33 GMT
> I read that an anonymous class is an unnamed local class.

Where?

> However, in the example below, I have created what I believe to be an
> anonymous class that is a member class, not a local class.  Anyone
> want to comment?

Well it's not a member class, it is? It's a member *variable* which is
an instance of an anonymous class.

An anonymous class is an unnamed class. By definition. Whether the
*instance* is local or a member has nothing to do with what the class is.
Reporter - 12 May 2007 03:22 GMT
On May 11, 6:33 pm, Esmond Pitt <esmond.p...@nospam.bigpond.com>
wrote:
> > I read that an anonymous class is an unnamed local class.
>
[quoted text clipped - 9 lines]
> An anonymous class is an unnamed class. By definition. Whether the
> *instance* is local or a member has nothing to do with what the class is.

Java in a Nutshell
Third Edition

by David Flanagan

Chapter 3: Object-Oriented Programming in Java
3.12. Anonymous Classes
"An anonymous class is a local class without a name."
Mike Schilling - 12 May 2007 06:23 GMT
>I read that an anonymous class is an unnamed local class.
>
> However, in the example below, I have created what I believe to be an
> anonymous class that is a member class, not a local class.  Anyone
> want to comment?

Let's see.  A member class is defined within the scope of its containing
class  Depending on its protection level, it might be visible within the
class, the package, or the world.  A local class is defined within a method
and is visible only within that method.  Of course, since anonymous class
have no names, you can't sensibly discuss what scope they're defined in.

You seem to have found an edge case.  I suggest that since your

public class Main {

  ClassA anonB_Object = new ClassA("Hello" ) {
      // The original Display Method
      public void Display(){
          System.out.println("Inherited Anonymous Overridden MEMBER
Display ClassA Output:"+Message);
      }
  };

is the moral equivalent of

public class Main {

  ClassA anonB_Object;

   init {
     aonB_Object = new ClassA("Hello" ) {
      // The original Display Method
      public void Display(){
          System.out.println("Inherited Anonymous Overridden MEMBER
Display ClassA Output:"+Message);
      }
   }
  };

that your anonyomus class is local to the (implied) init block.  I don't
insist in this, but I think it's simpler than defining yet another kind of
inner class.


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.