java的泛型

内容预览:

    泛型概述

    先看下面的代码:

    ArrayList al1 = new ArrayList();
    ArrayList al2 = new ArrayList();

    al1.add("hello");
    al1.add("world");
    al1.add("abc");
    al1.add("hello");
    al1.add("1234");
    al1.add("abc");
    al1.add("hello");

    for(int i = 0;i<al1.size();i++){
    //获取每一项
    String s = (String)al1.get(i);
    if(!al2.contains(s)){
    al2.add(s);
    }
    }
    for (Object object : al2) {
    System.out.println(object);
    }

     根据集合的用法来存取数据上面看起来很爽的样子  但是如果我们要往集合存取不一样的类型时  往集合里添加数据很方便但是  等到我们取的时候问题很多  会出现不同的类型安全的问题,为了解决这一问题  我们需要限制一个集合只能存取一种类型   这就是我们所说的泛型

    虽然上面的例子取的时候可以将数据统一成 string类型 需要强转类型    因为默认从集合中取数据时返回的都是Object类型(类的鼻祖 所有的类型都继承Object类型并且里面包含了一个自动向上转型 即任何的对象都可以赋值给一个Object类型的变量 但是有个缺点是 Object类型的变量不能直接调用子类中独有的方法  可以用向下转型解决)

    下面来看使用泛型的代码:

    ArrayList<String> al1 = new ArrayList<>();
    ArrayList<String> al2 = new ArrayList<>();

    al1.add("hello");
    al1.add("world");
    al1.add("abc");
    al1.add("hello");
    al1.add("1234");
    al1.add("abc");
    al1.add("hello");

    for(int i = 0;i<al1.size();i++){
    //获取每一项
    String s = al1.get(i);
    if(!al2.contains(s)){
    al2.add(s);
    }
    }
    for (String s : al2) {
    System.out.println(s);
    }

     总结:

    1.集合默认可以存任意类型的数据,貌似功能十分强大,  存的时候很爽,取得时候问题很多   类型安全问题
    2.解决的思路:限制一个集合中只能存一种类型的数据
    3.泛型技术就可以限制一个集合中只能存一种类型的数据
    4.怎么使用泛型
      ArrayList<String> al=new ArrayList<String>();
    5.使用了泛型后,在取数据的时候根本就不需要进行强制
    6.泛型技术出现在JDK5
    7.在JDK7的时候,推出了一种简化的写法:菱形写法
      ArrayList<String> al=new ArrayList<>();
    8.泛型只支持引用数据类型,对于基本数据类型要用他们的包装类
    9.所有的集合类都支持泛型

    泛型的底层原理

    包括泛型方法、泛型类、泛型接口

    不管是创建泛型方法还是泛型类还是泛型接口都需要遵循以下三点:

    1、声明

    2、使用

    3、赋值类型

    泛型方法:

    泛型类

    泛型接口:

    以上就是:java的泛型 的全部内容。

    本站部分内容来源于互联网和用户投稿,如有侵权请联系我们删除,谢谢。
    Email:[email protected]


    0 条回复 A 作者 M 管理员
      所有的伟大,都源于一个勇敢的开始!
    欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论