();b.set(new Apple());但是当你取出来的时候,是一个水果啊,你不知道是苹果还是香蕉,需要强转类型:Apple a = (Apple) b.get(); // 强转,可能出现ClassCastException...我们不知道使用者会替换成什么类型,所以用T表示。而实际类型参数Apple是在实例化Box时实际替换类型参数T的类型。它给T一个明确的类型,用于这次实例化。...这时候静态方法已经创建完了,无法使用这个实际类型,所以编译器不允许这么做。2)类型擦除就是编译器删除所有与类型参数相关的信息,并替换为上限(通常是Object类型)的过程。...类型擦除有利有弊,好处是可以在1.5之前的VM上运行泛型代码,坏处是导致些许运行期间的效率损失,因为擦除后所有的类型参数都被替换为Object类型。不过这点性能损失在大部分情况下可以忽略。...谢谢你将这些泛型的概念讲解的如此清晰和深入,我对泛型也有了更全面的认识。真是一个非常愉快的交流过程!候选人: 非常高兴能帮到您!