Summary

In addition to a number of other items, a class definition can contain:

Member classes and local classes were explained in previous lessons.

This lesson explains anonymous classes.

Although there are some differences, an anonymous class is very similar to a local class without a name.

Instead of defining a local class and then instantiating it, you can often use an anonymous class to combine these two steps.

An anonymous class is defined by a Java expression, not a statement.

Therefore, an anonymous class definition can be included within a larger overall Java expression.

Anonymous class definitions are often included as arguments to method calls, or as the right operand to assignment operators.

An object of an anonymous class must be internally linked to an object of the enclosing class.

There is no such thing as an anonymous interface, a local interface, or a member interface.

An anonymous class can often be defined very close to its point of use.

Once you become accustomed to the somewhat cryptic syntax used with anonymous classes, this can lead to improved code readability.

Probably the most important benefit of anonymous classes has to do with accessing the members of enclosing classes.

As with member classes and local classes, methods of an anonymous class have direct access to all the members of the enclosing classes, including private members.

Thus the use of anonymous classes can sometimes eliminate the requirement to connect objects together via constructor parameters.

In addition, objects of anonymous classes have access to final local variables that are declared within the scope of the anonymous class.

An anonymous class can be particularly useful in those cases where

An anonymous class cannot define a constructor. 

However, it can define an instance initializer.

Any arguments that you specify between the parentheses following the superclass name in an anonymous class definition are implicitly passed to the superclass constructor.

Only one instance of an anonymous class can be created.

As with member classes and local classes, anonymous classes cannot contain static members.

As with local variables and local classes, anonymous classes cannot be declared public, protected, private, or static.

File: dz.htm [Next] [Prev]