Chapter 3. Declarations

This chapter discusses how to declare a generic class. It describes constructors, static members, and nested classes, and it fills in some details of how erasure works.

Constructors

In a generic class, type parameters appear in the header that declares the class, but not in the constructor:

class Pair<T,U> {
  private final T first;
  private final U second;
  public Pair(T first, U second) {
        this.first = first;
        this.second = second;
  }
  public T getFirst() { return first; }
  public U getSecond() { return second; }
}

The type parameters T and U are declared at the beginning of the class, not in the constructor. However, actual type parameters are passed to the constructor whenever it is invoked:

Pair<String, Integer> pair1 = new Pair<String, Integer>("one",2);
assert pair1.getFirst().equals("one") && pair1.getSecond() == 2;

Look Out for This!   A common mistake is to forget the type parameters when invoking the ...

Get Java Generics and Collections, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.