java基础----泛型技术

1、泛型引入

泛型:用在不确定数据类型的时候(定义泛型)。

书写而格式:<数据类型>这里的数据类型必须是类类型或者接口类型,不能是基本数据类型。

运行>>>>>

上面的程序,在运行的时候发生了类型转换异常。

发生异常的原因:

在集合中保存的数据有String类型,也有Integer类型。在取出数据的时候,并没有做任何的判断,直接将取出的数据转成String

当取出的是Integer的时候,是无法转成String类型,就会发生上面的异常。

小编是一个有着5年工作经验的java程序员,对于java,自己有做资料的整合,一个完整学习java的路线,学习资料和工具,相信这里有很多学习java的小伙伴,我创立了一个2000人学习扣群,479121291。每晚都有java的直播课程。无论是初级还是进阶的小伙伴小编我都欢迎!

解决方案:

1、取出的时候,对数据类型进行判断。

2、在给集合保存数据的时候,就让集合中只能保存String类型数据,如果保存了其他的数据,让在编译的时候就报错。

上述的第二种解决方案:类似于数组

int[] arr = new int[6];

arr[0] = 123;

arr[1] = 3.14; 数组在定义的时候,就已经限定了每个空间只能存放int类型的数据,无法保存double类型的数据。

使用上述的方式解决集合,只需要在定义集合的时候在集合上加上数据类型的限定即可。这个技术就是泛型技术。

2、泛型技术介绍

泛型的书写格式:

<类或接口类型>

注意:在使用泛型的时候,一定是原来的类或者接口中预留的需要书写泛型的代码。如果类或接口中没有声明让书写泛型,在我们的代码中坚决不能出现泛型。

3、泛型技术简单应用

案例:给TreeSet集合传递比较器,比较String类型数据的长度。

4、自定义泛型

4.1 、在类上定义泛型

常规的类定义格式:

修饰符 class 类名{

成员;

}

定义泛型类格式:

修饰符 class 类名<标识符>{

成员;

}

注意:在类上定义的泛型,在使用这个类的时候,需要指定具体的数据类型,如果没有指定,这个泛型默认就会变成Object类型。

在类上定义的泛型,当使用的时候明确之后,类中所有使用和类上相同名称的泛型标识符的地方,都会转成当前给指定的数据类型。

4.2、非静态方法上定义泛型

有时定义类上的泛型,在类中的方法上使用的数据和其不一致。

在类中定义普通方法的格式:

修饰符 返回值类型 方法名( 参数列表 ){

方法体

}

定义拥有泛型的方法格式:

修饰符<标识符>返回值类型 方法名( 参数列表 ){

方法体

}

方法上定义的泛型,必须书写在返回值类型的前面。

4.3、静态方法上定义泛型

4.4、接口上定义泛型

接口的定义格式:

修饰符 interface 接口名{

成员;

}

泛型接口的定义格式:

修饰符 interface 接口名<标识符>{

成员;

}

总结:接口上的泛型,在定义接口的实现类的时候明确。

4.5.泛型传递

interface Collection<E>{}

interface List<E> extends Collection<E>{}

class ArrayList<E> implments List<E>{}

上述的这种泛型的关系,称为泛型传递,最终需要使用这个实现类对象的程序去明确泛型的具体数据类型。

5、泛型限定

5.1.泛型通配符

通配符:使用某些符号代替其他的信息或者数据。

泛型的通配符号:?

5.2.泛型上下限

需求:定义通用的打印不同集合中元素的方法

5.3.API中泛型限定介绍

TreeSet源码的定义格式:

public class TreeSet<E>{

public TreeSet( Collection< ? extends E> c ){

}

public TreeSet( Comparator< ? super E> com ){

}

}

//创建TreeSet集合对象

TreeSet<Person> set = new TreeSet< Person >( );

TreeSet类上定义的泛型E 已经被Person代替。TreeSet类中的方法中使用的E也为Person。

在创建TreeSet集合的时候,可以传递一个Collection集合,作为TreeSet集合中的初始化元素。

Set<Student> s = new HashSet<Student>(); 假设HashSet中已经添加了部分的Student对象

TreeSet<Person> set = new TreeSet< Person >( s );通过public TreeSet( Collection< ? extends E> c ) 创建TreeSet集合,

并传递初始化数据,而在创建TreeSet集合的时候,限定集合中保存的元素是Person,那么指定传递数据的

集合中的元素也应该和Person有一定的关系。

构造方法中接收的参数上的? extends E 相当于 ? extends Person。

当前给TreeSet中传递数据的集合中的元素必须是Person或者Person的子类。

public TreeSet( Comparator< ? super E> com ) 构造方法上传递的Comparator的目的是对TreeSet中保存的元素进行大小比较的。

真正给TreeSet中保存的任何元素都需要先取出来交给比较器进行大小的比较,然后决定具体存放的位置。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,340评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,762评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,329评论 0 329
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,678评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,583评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,995评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,493评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,145评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,293评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,250评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,267评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,973评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,556评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,648评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,873评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,257评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,809评论 2 339

推荐阅读更多精彩内容

  • 木离听到问话明显有些怔愣,抬头就见前方一个同样穿着校服留着小平头的男生正向着自己走来。 见木离看向自己...
    伏融阅读 181评论 2 2
  • The new England education has drained the town of many pr...
    毛君阅读 195评论 0 0
  • 愚人节收到老郑的微信, “我们重新在一起吧” 我看到后很快回了他的消息,“节日快乐”并配了一个微笑的表情。 然后屏...
    hachi先生阅读 379评论 3 8
  • 今天晚上回到家,闺女正在看电视。我说不拔卡是不行了,说好了周末才看电视的。她连忙说做完作业了。我劝自己别发火,说快...
    王晓英a阅读 253评论 0 0
  • 不知道你长大了以后还能不能看到这篇文章,如果能看到,你就来认识一下一岁一个月的你吧! 你是一个单眼皮的小伙子,眼睛...
    夏夜海边阅读 102评论 0 0