There are three kinds of reference types: class types (§8), interface types (§9), and array types (§10).
ReferenceType:
ClassOrInterfaceType
ArrayType ClassOrInterfaceType:
ClassType
InterfaceType ClassType:
TypeName InterfaceType:
TypeName ArrayType:
Type[ ]
Names are described in §6; type names in §6.5 and, specifically, §6.5.4.
class Point { int[] metrics; }
interface Move { void move(int deltax, int deltay); }
declares a class type Point, an interface type Move, and uses an array type int[]
(an array of int) to declare the field metrics of the class Point.