Nawiasy klamrowe są dla tak zwanych generycznych. Jest to dużo jak szablon w C++ i pozwala utworzyć pojedynczą strukturę danych, którą można silnie wpisać. Na przykład, ArrayList obiekt używa rodzajowy do określenia, jakiego rodzaju rzeczy są w ArrayList:
ArrayList<String> - an ArrayList containing Strings
ArrayList<MyClass> - an ArrayList containing MyClass objects
Przy definiowaniu strukturę, która sprawia, że stosowanie leków generycznych, których używasz do zapisu powyżej. "T" jest symbolem zastępczym dla niektórych klas, które są wypełniane, gdy klasa jest instancjonowana i otrzymuje typ. Na przykład, definicja ArrayList może wyglądać tak:
public class ArrayList<T> ...
Najprostszym sposobem jest po prostu użyć MyGeneric<T>
i niech każda klasa być użyte. Jednak czasami chcesz, aby gereric był używany z klasami w pewnej strukturze dziedziczenia. W tym konkretnym przypadku Comparable<? super T>
oznacza, że będzie to obiekt, który rozszerza się Porównywalnie porównuje dowolny typ obiektu, który pasuje do T lub jest super-klasy T.
Jest to również pomocne asnwer dzięki – gingergeek