作用:通过泛型可以在编译时期完成一些类型转换的工作,避免在运行时出现classCastException
好处:1.类型安全,避免了classCastException
2.消除了代码中许多的强制类型转换
3.为较大的优化带来了可能
泛型的运用的地方
1.泛型类
public class Container<K,V>{
private K key;
pirvate V value;
public Container(K k,V v){
this.key = k;
this.value = v;
}
public K getkey() {
return key;
}
public V getValue() {
return value;
}
public void setKey() {
this.key = key;
}
public void setValue() {
this.value = value;
}
}
2.泛型方法,在类和接口都没有使用泛型的时候对方法使用泛型
public class Teset{
public static <T> void out(T t){
System.out.println(t);
}
public static void main(Stirng []args){
out(1);
out("娃哈哈");
}
}
3.泛型构造器
public class Person{
public <T> Person(T t){
System.out.println(t);
}
}
public static void main(String[] args){
//隐式
new Person(22);
//显示
new<String> Person("hello");
}
类型通配符
1.上限通配符: List< ? extends Shape>
即List里面的对象只能是继承自Shape的对象
2.下限通配符: List<? super circle>
即List里面的对象必须是circle得父类或接口
类型擦除
因为泛型只作用与编译阶段,正确校验出泛型结果后就会将泛型类型擦除,所以不能将静态变量声明为泛型的,因为系统并不会生成泛型类
网友评论