一、泛型经常使用于集合(Set、Map)以及单元素容器(ThreadLocal、AtomicReference)安全
二、Class 类在jdk 1.5 以后被泛型化了3d
- String.class 属于Class<String> 类
- 下述,追求更加灵活:将key 参数化,不是整个容器

- Favorites 就是类型安全的异构容器
- 通配符类型是嵌套的,Class<?> 在存入map 时被Class<String>等替换掉,所以能够存储
- map的value 是Object ,所以与key 的类型不能保证匹配
- getFavorite 方法,使用 T 作返回类型,须要类型动态转换,保证了key 与 value 的联系
- 这里的 cast 仅仅验证参数是不是class对象所表示类型的实例(若是结果不对,抛出ClassCastException)

Favorites 类存在两种局限性对象
- 其一:恶意的客户端能够很容易破坏类型安全,只要以原生态形式使用class对象(擦除的缘由)
- put 的时候加一个强制转换便可

- 其二,不能用在不可具体化类型中
- 不能够保存 List<String> ,由于List<String>.class不合法(合法的是:List.class)
- 以下,类 Class 提供了一种安全执行类型转换方法asSubClass 转换成子类
