您的位置 首页 java

Java基础的泛型你了解多少?

一、 Java 泛型

1.1为什么使用泛型

  • 今天我们来了解一下泛型的优点与不足。
  • 使用泛型,可以使我们不必在进行类型强制转换。
  • 简化了我们的代码,但是我们需要考虑用哪一种类型才比较合适
  • 让你的程序可读性更加,同时也更加的安全

1.2学会使用泛型

  • Java中通常使用变量E表示集合元素类型,K和V分别表示键和值的类型。T表示”任意类型”。
  • 这也是泛型入门的基础,学会如何使用泛型。
  • 简单定义一个泛型的类
 public class Test1<T> {
    T age;  //定义泛型变量,泛型T就相当于基本数据类型。
    T first;
     private  T second;
    public Test1(T age) {
        this.age = age;
    }
}
class B {
    public  static   void  main(String[] args) {
        Test1<String> test1 = new Test1<>("13");//这里就体现了泛型的灵活性。我们可以传入任意的类型。
        Test1<Integer> test2 = new Test1<>(15);
    }
}  
  • 泛型方法
 public <T> T Test2(T age) {
        return age;
    }
//我们可以传入任意类型的参数  

1.3泛型的继承

  • 如果我们要使用一个接口中的方法,那么我们可以利用泛型的继承来实现
 public static <T  extends  Comparable> T Test3(T[] a){
        //这样就继承了Comparable的方法
        //但是这里的T只能使用 实现了Comparable接口的类。
    }  
  • 你可能会好奇,Comparable不是接口吗,为什么要用extends? 反正都是这么用的,记住得了。
  • 我们可以使用”&” 通配符 继承多个 <T extends Comparable & List>
    我们来讨论一个继承关系:
 public class Father {
}

class Son extends Father {
    public static void main(String[] args) {
        ArrayList<Father> list1 = new ArrayList<>();
        ArrayList<Son> list2 = list1;//这是错误的:x:
      //他们两个没有任何关系
    }
}  

1.4类型擦除

  • 类型擦除就是将我们的Java代码,转换成普通代码。
  • 转换成它的顶级父类。
  • 了解吧
 public class Test1<T> {
    T age;
    T first;
    //擦除后变成
    Object age;
    Object first;
}  

1.5静态与捕获异常

 public static T test();//Error:x:
  
 try{
       
   }catch(T e){
       //不可以O
   }  

二、通配符概念

  • 在通配符类型中,允许类型参数发生变化。 Pair <? extends Employee> 表示任何泛型Pair类型,它的类型参数是Employee的子类,如Pair ,但不是Pair 。这个是继承方面的。
  • 通配符的超类型限定: <? super Manager> 表示为Manager的所有父类。
  • 无限定通配符: Pair<?>
  • 额。。。。了解即可吧/(ㄒoㄒ)/~~

文章来源:智云一二三科技

文章标题:Java基础的泛型你了解多少?

文章地址:https://www.zhihuclub.com/194519.shtml

关于作者: 智云科技

热门文章

网站地图