Java Reference
In-Depth Information
parameters start with an uppercase letter, and there is some tradition of using a single
letter for a type parameter. Starting with an uppercase letter makes sense because typi-
cally a class type is plugged in for the type parameter. The tradition of using a single
letter is not so compelling.
A class definition with a type parameter is stored in a file and compiled just like any
other class. For example, the parameterized class shown in Display 14.4 would be
stored in a file named
Sample.java
. Once the parameterized class is compiled, it can
be used like any other class, except that when used in your code, you must specify a
class type to be plugged in for the type parameter. For example, the class
Sample
from
Display 14.4 could be used as follows:
Sample<String> object1 =
new
Sample<String>();
object1.setData("Hello");
System.out.println(object1.getData());
Sample<Pet> object2 =
new
Sample<Pet>();
Pet p =
new
Pet();
<
Some code to set the data for the object p
>
object2.setData(p);
The class
Pet
can be as defined in Chapter 4, but the details do not matter; it could be
any class.
A class, such as
Sample<String>
, that you obtain from a generic class by plugging
in a type for the type parameter is said to
instantiate
the generic class. So, we would
say “
Sample<String>
instantiates the generic class
Sample
.”
Notice the angular bracket notation for the type parameter and also for the class
type that is plugged in for the type parameter.
instantiate
Display 14.4
A Class Definition with a Type Parameter
1
public class
Sample<T>
2{
3
private
T data;
4
public void
setData(T newData)
5
{
6
data = newData;
T
is a parameter for a type.
7
}
8
public
T getData()
9
{
10
return
data;
11
}
12
}