There are three parts to generics:
Declare the class which will have generic type parameters
Declare/instantiate an object of that class, passing the actual type arguments to it.
Invoke methods on the object of the instantiated generic class.
Using the instantiated generic class is no different to using a non-generic class, so we won't spend a lot of time looking at that. The class declaration has to come before any instantiations, so let's look at declarations first.