Anonymous classes are a special case of local inner classes that are declared without a name.
They are single-use classes that are created and defined at the same time.
They are typically used to declare an instance of a class that implements an event listener interface or extends an event adapter class.
There are two forms for their syntax, depending on whether they implement an interface or extend another class:
In the first form, the anonymous class is declared as implementing the specified interface name.
No implements clause is used and the interface name is supplied as the type of object being created. The anonymous class is responsible for implementing all of the methods of the interface.
When an anonymous inner class is defined as an interface, the
class is its direct superclass.
class does not have a constructor that takes arguments, no arguments may be supplied when an anonymous class is created as an interface.
In the second form, the superclass of the class being defined is specified. No extends clause is used. The arguments (if any) that are supplied are passed to the
superclass constructor when the object is created. The superclass must have a constructor with a signature that accepts the arguments.
Since the class being declared does not have a name, no constructor is specified in the class body. An anonymous class may not have any modifiers.
The Anonymous program
illustrates the use of anonymous inner classes.