Java Reference
In-Depth Information
Because
accessEnclosingClass()
is nonstatic,
EnclosedClass
must be
instantiated beforethismethodcanbecalled.Thisinstantiation musttakeplaceviaan
Listing 3-6.
Calling a nonstatic member class's instance method
class NSMCDemo
{
public static void main(String[] args)
{
EnclosingClass ec = new EnclosingClass();
ec.new
EnclosedClass().accessEnclosingClass();
//
Output: 1
}
}
erence in local variable
ec
. Then,
main()
uses this reference as a prefix to the
new
operator, to instantiate
EnclosedClass
, whose reference is then used to call
ac-
cessEnclosingClass()
, which outputs
1
.
Note
Prefixing
new
withareferencetotheenclosingclassisrare.Instead,youwill
typically call an enclosed class's constructor from within a constructor or an instance
method of its enclosing class.
Suppose you need to maintain a to-do list of items, where each item consists of a
plement these items.
Listing 3-7.
Implementing to-do items as name-description pairs
class ToDo
{
private String name;
private String desc;
ToDo(String name, String desc)
{
this.name = name;
this.desc = desc;