Apex, in general, is a statically-typed programming language, which
means users must specify the data type for a variable before that
variable can be used. For example, the following is legal in
Apex:
The following is not legal if
x has not been defined earlier:
Lists, maps and sets are
parameterized in
Apex: they take any data type
Apex supports for them as an argument. That data type must be replaced
with an actual data type upon construction of the list, map or set.
For example:
List<String> myList = new List<String>();
Subtyping with Parameterized Lists
In
Apex, if type
T is a subtype
of
U, then
List<T> would be a subtype of
List<U>. For example, the following
is legal:
List<String> slst = new List<String> {'foo', 'bar'};
List<Object> olst = slst;