Java泛型——帮助你更好的读懂源码<dog>
创始人
2024-01-16 09:44:59
0

泛型

泛型就相当于集合的标签,我们在使用集合<>的时候,就是在使用泛型

要知道的是在jdk1.5以前我们只能把集合中的元素设计为Object,之后引入了泛型的概念来解决,我们把元素的类型设计成一个参数,这个类型参数就叫做泛型。

为啥要有泛型

我们假设没有泛型会出现哪种情况,Object类型,是不是啥都能存放?少了限制

package fanxing;import java.util.ArrayList;public class text01 {public static void main(String[] args) {ArrayList id = new ArrayList<>();id.add(1);id.add(2);id.add(3);id.add(4);id.add("ymm");//误存放for(Object obj : id){System.out.println(obj);}}
}

在这里插入图片描述
缺点:集合中可能出现不同类型的数据,不便于管理

添加泛型后:

package fanxing;import java.util.ArrayList;public class text01 {public static void main(String[] args) {ArrayList id = new ArrayList();id.add(1);//自动装箱了id.add(2);id.add(3);id.add(4);//id.add("ymm");会报错for(Object obj : id){System.out.println(obj);}for(Integer i : id){System.out.println(i);}}
}

优点:在编译初期就进行检查,不会出现后续的数据类型错误

在这里插入图片描述
在这里插入图片描述
就是将E给确定为Integer类型

泛型对应的数据类型:
都是引用数据类型,不能是基本数据类型,因为泛型本来就是给集合服务的,集合是引用数据类型,那么泛型自然也就是引用数据类型了,hh

简便写法:
ArrayList id = new ArrayList<>();

泛型接口

对于初次接触泛型的小伙伴,可能有点懵,啥是泛型接口?
在这里插入图片描述
参考上面这个源码中的这就是一个泛型接口,下面我们来手写一个泛型接口(学习这个东西,方便我们来看懂源码

public class Text1{}
public class Text2 {}
  1. Text1就是一个普通类
  2. Text2就是一个泛型类
  3. <>里面就是一个参数类型,这个类型是不确定的,起到一个占位的作用
  4. 里面像源码中一样也是引用数据类型
package fanxing;import java.util.ArrayList;public class text01 {public static void main(String[] args) {Text a = new Text();a.aa("jjjjj");}public static class Text {int a;int b;public void aa(E a){System.out.println(a);}}
}

在这里插入图片描述
我们可以说是,如果在实例化的时候不指定数据类型,默认为Object类型

来看如果我们在实例化的时候指定数据类型呢?
在这里插入图片描述

package fanxing;import java.util.ArrayList;public class text01 {public static void main(String[] args) {Text a = new Text();a.aa(1111);}public static class Text {int a;int b;public void aa(E w){System.out.println(w);}}
}

在这里插入图片描述

继承中的泛型接口

package fanxing;import java.util.ArrayList;public class text01 {public static void main(String[] args) {Text01 son = new Text01();son.aa(123);}public static class Text {public void aa(E a){System.out.println(a);}}public static class Text01 extends Text{}
}

在这里插入图片描述

指定父类中的泛型,子类中无需再指定泛型,可以直接继承自父类中指定好的泛型,那么既然有指定好的,那么我们来看一下没有指定好的泛型是什么情况?
在这里插入图片描述
hh,红色报错!
如果父类不明确指定泛型,那么子类也会变成一个泛型类,这个E的类型可以在创建子类对象的时候确定
在这里插入图片描述
这像不像ArrayList中的源码呢?

泛型方法

这里有一个比较容易混淆的概念,泛型方法。
在这里插入图片描述
这是不是一个泛型方法呢?不是!并不是带泛型就是泛型方法

泛型方法的参数类型无关于当前类的泛型,我们通过下面的代码来看一下!

	public static class Text {//不是泛型方法public void aa(E a){System.out.println(a);}//是泛型方法public   void W(W b){}}

假设当前的类就没泛型,那么我们第一种写法就是正确的

调用泛型方法

package fanxing;import java.util.ArrayList;public class text01 {public static void main(String[] args) {Text t= new Text();t.W("j");}public static class Text {//不是泛型方法public void aa(E a){System.out.println(a);}//是泛型方法public static    void W(W b){//泛型方法可以是静态方法System.out.println("我是泛型方法");}}}

相关内容

热门资讯

端午节祝福问候语 精选端午节祝福问候语27句  朋友不一定合情合理,但一定知心知意;不一定形影不离,但一定心心相惜;不...
美好祝福语 美好祝福语  在平时的学习、工作或生活中,大家总少不了要接触或使用祝福语吧,祝福语有助于人与人之间感...
周末朋友之间的祝福QQ信息 周末朋友之间的祝福QQ信息  1、倘若周一周五是为了生存而奋斗,那么周六和周日则是为了生活而享受。我...
教师节祝福诗词 教师节祝福诗词大全  教师节,旨在肯定教师为教育事业所做的贡献。在中国近现代史上,多次以不同的日期作...
正月十五元宵节祝福语微信 2020年正月十五元宵节祝福语微信锦集55句  月亮,映照着你的欢笑;汤圆,品尝着你的心愿;龙灯,飞...
的重阳节对联 2022的重阳节对联大全  在日常学习、工作抑或是生活中,大家对对联都再熟悉不过了吧,对联是在古代的...
小学开学祝福语简短 小学开学祝福语简短  夏天悄悄过去,留下多彩回忆,新的学期就要开始,愿你保持快乐的心情,接下来是小编...
父亲节日快乐的祝福语 父亲节日快乐的祝福语(精选205句)  在日常生活或是工作学习中,大家对祝福语都不陌生吧,祝福语就是...
校庆祝福语70条   1.创百年丰功,赖济济时贤,桃李芬芳溢四海。  2.朝搴阰之木兰兮,夕揽洲之宿莽。朋友们,珍惜在...
春天的对联 春天的对联  无论是在学校还是在社会中,许多人对一些广为流传的对联都不陌生吧,对联对仗工整,平仄协调...
圣诞节给朋友的祝福语短信摘录 圣诞节给朋友的祝福语短信摘录(精选65句)  无论是身处学校还是步入社会,大家或多或少都会用到过祝福...
微信五一劳动节祝福语 微信五一劳动节祝福语  五一劳动节快到了,愿幸福和快乐都能加倍,下面是YJBYS小编为大家搜集了关于...
简洁的新年祝福语 简洁的新年祝福语(精选80句)  在日常学习、工作抑或是生活中,大家都有写祝福语的经历,对祝福语很是...
公司年会祝福语 公司年会祝福语15篇  在日常学习、工作抑或是生活中,大家都经常接触到祝福语吧,祝福语可以给人们带去...
经典的春节祝福语 2019年经典的春节祝福语  1、猪年到来喜事多,阖家团员幸福多;心情愉快朋友多,身体健康快乐多;一...
鼠年春节拜年祝福语 鼠年春节拜年祝福语大全  在平平淡淡的学习、工作、生活中,大家总少不了要接触或使用祝福语吧,祝福语的...
国庆节祝福语 精选国庆节祝福语大全  在日常学习、工作或生活中,大家总免不了要接触或使用祝福语吧,祝福语不限制字数...
妻子送老公生日蛋糕祝福语 妻子送老公生日蛋糕祝福语(精选55句)  在日常学习、工作或生活中,大家一定都接触过祝福语吧,祝福语...
元旦新年贺卡祝福语 精选元旦新年贺卡祝福语大集合47句  元旦已到,愿你财运如沸水升腾;愿你事业麻辣烫般红火;愿你爱情像...
除夕祝福语短信25条 2022年除夕祝福语短信25条  烟花璀璨炫人眼,鞭炮声响乐连连;家家团聚喜团圆,喜在心间笑开颜;除...