Są takie sytuacje, w których metody i klasy nie polegają na konkretnym typie danych, na którym operują. Na przykład szukanie elementu w tablicy musi pozwalać na procesowanie tablic intów, Stringów czy typów klas, które sami stworzymy. Nieważne jaki typ danych przechowuje tablica – algorytm będzie taki sam. Jednak nie możemy tego algorytmu zawrzeć w jednej metodzie, bo wymagałaby ona różnego typu argumentów.
Od wersji 5 Java wspiera typy generyki. Metody i klasy generyczne potrafią obsłużyć różne typy w ten sam sposób.
Typ generyczny to generyczna klasa lub interfejs która jest parametryzowana poprzez typy. Żeby zadeklarować klasę generyczną, musimy zadeklarować klasę wraz z parametrem ograniczonym nawiasami ostrymi.