泛型

2020-08-19  本文已影响0人  小李同学今天博学了吗

作用:通过泛型可以在编译时期完成一些类型转换的工作,避免在运行时出现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得父类或接口

类型擦除

因为泛型只作用与编译阶段,正确校验出泛型结果后就会将泛型类型擦除,所以不能将静态变量声明为泛型的,因为系统并不会生成泛型类

上一篇 下一篇

猜你喜欢

热点阅读