The <> brackets are for what's called generics. This is alot like a template in C++ and alows you to create a single data structure that can be strongly typed. For example, the ArrayList object uses a generic to define what type of items are in the ArrayList:
ArrayList<String> - an ArrayList containing Strings
ArrayList<MyClass> - an ArrayList containing MyClass objects
When you are defining a structure that makes use of generics you use to notation above. The "T" is a placeholder for some class that is filled in when the class is instantiated and given a type. For example, the definition of ArrayList might look something like this:
public class ArrayList<T> ...
The simplest way is to simply use MyGeneric<T>
and let any class be used. However, sometime you only want the gereric to be used with classes in a certain inheritence structure. In this specific case Comparable<? super T>
means that this is going to be an object that extend Comparable the Compares any type of object that matches T or is a super-class of T.