Is this a local anonymous class or a member anonymous class

R

Reporter

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);
}

}
 
E

Esmond Pitt

Reporter said:
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.
 
R

Reporter

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.

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."
 
M

Mike Schilling

Reporter said:
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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,733
Messages
2,569,439
Members
44,829
Latest member
PIXThurman

Latest Threads

Top