java中啥是泛型,怎么用泛型?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中啥是泛型,怎么用泛型?相关的知识,希望对你有一定的参考价值。

这是在各种Java泛型面试中,一开场你就会被问到的问题中的一个,主要集中在初级和中级面试中:

1:什么是泛型?
泛型就是广泛的类型,也是一种数据类型,而这种数据类型可以是任意类型,编写过程中当中不能确定类型,创建对象时必须指定具体类型,不指定也可以,但是会出现一些错误。

泛型是编译器行为,只能在编译期有效,如果能够跨过编译器,那么泛型就没有任何意义了。
2、泛型类
怎么定义泛型类?
在类后面加<>,<>中可以编写任意长度任意字符,不能是数值。(一般用26个大写英文字母表示)
泛型类 <具体类型> 变量名 = new 泛型类<>();
3.怎么使用泛型
有以下几种使用场景以及放在那种位置
泛型只能定义引用数据类型,而不能使用基本数据类型
泛型类、泛型方法、泛型接口、泛型通配符
例如:作用在类上时( public class Animal <E> E pet; ) , 泛型跟在类后边,可以指定用了泛型的类内部的 pet 的类型。
作用在对象上时( Animal<Dog> str = new Animal<Dog>(); ) , 泛型跟在类后边 , 使得对象类的的 pet 属性为 Dog类型。
参考技术A 最简单的运用:List<String> list = new ArrayList<String>();
这个是什么意思?
意思就是list只装String类型的数据,别的,装不进去
然后你就会觉得这个好像有点封装的意思,比如LIst<Student>,封装学生类
所以,所谓泛型就是广泛的数据类型,你可以把它理解成封装

为什么用泛型?

#为什么用泛型?
一言以蔽之,当你定义类,接口,方法的时候泛型可以使类型(类和接口)作为参数。和声明方法时那些普通的参数相似,类型参数可以使你针对于不同的输入复用代码。但是和普通参数不同的是普通参数的输入是值,而类型参数的输入是类型。

使用参数的代码拥有更多的好处:

  • 更强的编译时类型检查
    Java 编译器针对泛型使用强类型检查。如果代码中有类型错误更容易被发现。修复编译时错误比运行时错误容易得多。因为运行时错误更不容易被发现。
  • 消除类型转换
    以下的代码片段需要类型转换:

    1
    2
    3
    List list = new ArrayList();
    list.add("hello");
    String s = (String) list.get(0);

    当我们使用泛型重写这段代码之后,代码就不需要类型转换了

    1
    2
    3
    List<String> list = new ArrayList<String>();
    list.add("hello");
    String s = list.get(0); // no cast
  • 使编程人员可以实现泛型算法。
    通过使用泛型,编程人员可以实现泛型算法,这些算法可以应用于那些存放不同类型的集合中,这些算法可以被定制,而且具有类型安全和更好的可读性。
    下一页

原文:大专栏  为什么用泛型?


以上是关于java中啥是泛型,怎么用泛型?的主要内容,如果未能解决你的问题,请参考以下文章

Java基础---泛型

为什么要使用泛型?怎么用泛型?

泛型是什么?它在java中又有哪些必要性?

泛型是什么?它在java中又有哪些必要性?

Java开发知识之Java中的泛型

用泛型方法调整Java中泛型数组的大小