A class specifier may contain (index-)bounds. This is required for array-classes including user-defined ones and is only useful for such classes, cf. 8.2.1. Each bound expression must yield an integer value specifying the length of the corresponding dimension of an array class. Stars may be used instead of explicit expressions when specifying array types except when objects are created.
Section 4.2 implies that the keyword SAME may be used to specify the type in which it occurs. SAME occurring in a class A changes its meaning if this class is inherited by another class B: Whereas any occurrence of SAME in A designates the class A, the inherited occurrence then designates class B. If SAME occurs in the signature of a polymorphic type $C, it stands for $C itself.
For predefined class specifiers see 8.2.
Further type specifiers specify method types.