(upper bound, 在Java中，即类型参数中extends子句的类型)，如果上界没有定义，则默认为Object。这样，在编译后就不会保留类型参数。同时为了保证类型安全，会插入显式类型转换；以及为了保证多态性，会生成桥接方法。因此，不同于C++的模板，Java通过类型擦除实现泛型，不会生成新的类。