Generics are a powerful, and sometimes controversial, new feature of the Java programming language. This part of the book describes generics, using the Collections Framework as a source of examples. A comprehensive introduction to the Collections Framework appears in the second part of the book.
The first five chapters focus on the fundamentals of generics. Chapter 1 gives an overview of generics and other new
features in Java 5, including boxing, foreach loops,
and functions with a variable number of arguments. Chapter 2 reviews how subtyping works and
explains how wildcards let you use subtyping in connection with generics.
Chapter 3 describes how generics work with
Comparable interface, which
requires a notion of bounds on type variables. Chapter 4 looks at how generics work with various
declarations, including constructors, static members, and nested classes.
Chapter 5 explains how to evolve legacy
code to exploit generics, and how ease of evolution is a key advantage of
the design of generics in Java. Once you have these five chapters under
your belt, you will be able to use generics effectively in most basic
The next four chapters treat advanced topics. Chapter 6 explains how the same design that leads to ease of evolution also necessarily leads to a few rough edges in the treatment of casts, exceptions, and arrays. The fit between generics and arrays is the worst rough corner of the language, and we formulate two principles to help you work ...