Declaring a class that works with a constrained generic type
The following lines declare a Party
class that takes advantage of generics to work with many types. We import java.util.concurrent.ThreadLocalRandom
because it is an extremely useful class to easily generate a pseudo-random number within a range. The class name, Party
, is followed by a less than sign (<
), a T
that identifies the generic type parameter, the extends
keyword, and an interface name that the T
generic type parameter must implement, Sociable
, an ampersand (&
), and another interface name that the T
generic type must also implement, Comparable<Sociable>
. The greater than sign (>
) ends the type constraint declaration that is included within angle brackets (<>
). Thus, the T
generic type parameter has to be a type that must implement both the Sociable
and Comparable<Sociable>
interfaces. The following code highlights the lines that use the T
generic type parameter. The code file for the sample...