I believe it is usually just called a Recursive Generic Type. As Tom Hawtin points out, you probably want class A>. The most prominent use of this pattern is java.lang.Enum (which you probably knew considering you chose Comparable as your interface).