In this context, People is the name of a particular class, not a type variable. If you want this to be a type variable, you must say that Student itself is generic:
public class Student<People> implements Comparable<People> { ... }
By the way, conditionally wildcards such as T and K , which are stand-ins for classes, are usually called type variables, not types.
source share