建立有界泛型類
你可以通過在類定義中繫結該型別來限制泛型類中使用的有效型別。給定以下簡單型別層次結構:
public abstract class Animal {
    public abstract String getSound();
}
public class Cat extends Animal {
    public String getSound() {
        return "Meow";
    }
}
public class Dog extends Animal {
    public String getSound() {
        return "Woof";
    }
}
沒有有界泛型,我們不能建立一個通用的容器類,並且知道每個元素都是動物:
public class AnimalContainer<T> {
    private Collection<T> col;
    public AnimalContainer() {
        col = new ArrayList<T>();
    }
    public void add(T t) {
        col.add(t);
    }
    public void printAllSounds() {
        for (T t : col) {
            // Illegal, type T doesn't have makeSound()
            // it is used as an java.lang.Object here
            System.out.println(t.makeSound()); 
        }
    }
}
使用類定義中的泛型繫結,現在可以實現。
public class BoundedAnimalContainer<T extends Animal> { // Note bound here.
    private Collection<T> col;
    public BoundedAnimalContainer() {
        col = new ArrayList<T>();
    }
    public void add(T t) {
        col.add(t);
    }
    public void printAllSounds() {
        for (T t : col) {
            // Now works because T is extending Animal
            System.out.println(t.makeSound()); 
        }
    }
}
這也限制了泛型型別的有效例項化:
// Legal
AnimalContainer<Cat> a = new AnimalContainer<Cat>();
// Legal
AnimalContainer<String> a = new AnimalContainer<String>();
// Legal because Cat extends Animal
BoundedAnimalContainer<Cat> b = new BoundedAnimalContainer<Cat>();
// Illegal because String doesn't extends Animal
BoundedAnimalContainer<String> b = new BoundedAnimalContainer<String>();