Java Reference
In-Depth Information
Rules for local classes
A local class is an inner class. Therefore, it must satisfy all the rules for an
inner class. In addition, any local variable and parameter that it references must
be declared final so they cannot be changed after its initialization. Below, we
state the restrictions on a local class that is defined within another class. In the
class shown in Fig. 12.22, we have made inner class In public just in order to
give the rules most easily. Generally, inner classes would be made private.
Refer to Fig. 12.22 when reading the following rules for local inner classes:
See also a foot-
note on lesson
page 12.7.
1. The parameters and local variables that In accesses must have modifier
final . In Fig. 12.22, In can access parameter p1 and local variable
local1 , but In cannot reference p2 and local local2 , since they are not
final . The example program shows how to access the value of a non-
final parameter or local variable —assign it to a final local variable.
2. The only static components that In may have are final static fields that
are initialized with expressions that contain only constants and literals.
3. Class In can access all the static components of class Out even if they are
import java.util.*;
public class Out {
/** = an Iterator over b 's elements in reverse */
public static Iterator revIt( final Object[] b) {
/** a (reverse) Iterator over b */
class ItOver implements Iterator {
/** b[0..n-1] remains to be enumerated */
int n= b.length;
/** = " there is another element to process "*/
public boolean hasNext()
{ return n > 0; }
/** = the next item of the iteration */
public Object next() {
n= n - 1;
return b[n];
}
/** remove is not implemented */
public void remove() {}
}
return new ItOver();
}
}
Program 12.21:
A local inner class
Search WWH ::




Custom Search