The Identifier in a class declaration specifies the name of the class. This class name has as its scope (§6.3) the entire package in which the class is declared. As an example, the compilation unit:
package points;
class Point { int x, y; // coordinates PointColor color; // color of this point Point next; // next point with this color
static int nPoints; }
class PointColor { Point first; // first point with this color PointColor(int color) { this.color = color; } private int color; // color components }
defines two classes that use each other in the declarations of their class members.
Because the class type names Point
and PointColor
have the entire package
points
, including the entire current compilation unit, as their scope, this example
compiles correctly-that is, forward reference is not a problem.