美文网首页
01-谈谈泛型

01-谈谈泛型

作者: LoveCoding | 来源:发表于2018-01-10 14:24 被阅读0次

    泛型在实际开发和面试中都非常重要,所以我们今天来谈谈这个话题

    1,什么是泛型

    泛型的本质是为了参数化类型,通过泛型指定的不同类型来控制形参具体限制的类型。

    举个例子!

    我们要定义一个只能存放整数的集合,怎么写?

    List list = new ArrayList();

    这样对吗?其实不行,这样我们可以往list添加任务数据类型

    所以这个时候,解决办法就是采用泛型,可以这么来写

    List<Integer> list = new ArrayList<>();

    通过参数化类型,就可以限制list可以添加的类型

    2,泛型的特点,只对编译期间有效,在运行期间无效(泛型的擦除)

    我们来看看,以下这两个集合是同个类型吗?

    List list1 = new ArrayList<>();

    List list2 = new ArrayList<>();

    很明显,在编译期间,两个集合都很好控制了添加的数据类型。

    但是,在运行期间,这个类型会被擦除。我们来做个试验就得到这个结论

    public static void main(String[] args) {

        Listlist1 = new ArrayList<>();

        List list2 = new ArrayList<>();

        System.out.println(list1.getClass() == list2.getClass());

    }

    可以试试结果,我打包票,出来的结果是true

    3,注意点

    泛型的参数类型只能是引用类型,不能是基本数据类型,比如int

    4,泛型的使用

    4.1 泛型类

    public class GenericTest {

        public static void main(String[] args) {

            GenericClassg1 = new GenericClass<();

            g1.setKey(1);

            System.out.println(g1.getKey());

        }

    }

    class GenericClass{

        private T key;

        public void setKey(T key){

            this.key = key;

        }

        public T getKey(){

            return this.key;

        }

    }

    4.2 泛型接口

    interface GenericInterface{

        public T getNext();

    }

    相关文章

      网友评论

          本文标题:01-谈谈泛型

          本文链接:https://www.haomeiwen.com/subject/falonxtx.html