1. 为什么使用泛型 ?
**泛型是为了解决在数据在装入集合时的类型都被当做Object对待,从而失去本身特有的类型,从集合里读取时,还要强制转换,java是所谓的静态类型语言,意思是在运行前,或者叫编译期间,就能够确定一个对象的类型,这样做的好处是减少了运行时由于类型不对引发的错误。但是强制类型转换是钻了一个空子,在编译期间不会有问题,而在运行期间,就有可能由于错误的强制类型转换,导致错误,这个编译器无法检查到。有了泛型,就可以用不着强制类型转换,在编译期间,编译器就能对类型进行检查,杜绝了运行时由于强制类型转换导致的错误。**
2. Java 虚拟机支持泛型么 ? 什么是泛型擦除 ?
**不支持**
**擦除是将泛型类型以其父类代替,如String 变成了Object等。其实在使用的时候还是进行带强制类型的转化,只不过这是比较安全的转换,因为在编译阶段已经确保了数据的一致性。**
3. 怎么使用泛型 ?
**在集合声明和实现的后面加上< >,在里面写上指定的类型,这个集合就只能存放指定的元素类型了**
4. K , V 代表什么意思 ?
**K代表Map中的key**
**V代表Map中的value**
5. 自定义类或者接口怎么使用泛型 ?
**创建泛型接口,在接口名后定义通配符T**
**接口中定义泛型方法,参数不再是明确的类型,而是通配符T**
**类实现接口时将通配符替换为明确的类型**