java李兴华学习笔记之泛型资料下载.pdf

上传人:b****1 文档编号:16119618 上传时间:2022-11-20 格式:PDF 页数:15 大小:254.97KB
下载 相关 举报
java李兴华学习笔记之泛型资料下载.pdf_第1页
第1页 / 共15页
java李兴华学习笔记之泛型资料下载.pdf_第2页
第2页 / 共15页
java李兴华学习笔记之泛型资料下载.pdf_第3页
第3页 / 共15页
java李兴华学习笔记之泛型资料下载.pdf_第4页
第4页 / 共15页
java李兴华学习笔记之泛型资料下载.pdf_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

java李兴华学习笔记之泛型资料下载.pdf

《java李兴华学习笔记之泛型资料下载.pdf》由会员分享,可在线阅读,更多相关《java李兴华学习笔记之泛型资料下载.pdf(15页珍藏版)》请在冰豆网上搜索。

java李兴华学习笔记之泛型资料下载.pdf

因为现在的程序中可以接收三种数据类型的数据,所以为了保证程序的正确性,最好使用Object完成,因为Object可以接收任意的引用数据类型:

数字?

自动装箱操作?

Object字符串?

Object按照以上的特点,完成程序:

publicclassPoint/表示坐标privateObjectx;

privateObjecty;

publicObjectgetX()returnx;

publicvoidsetX(Objectx)this.x=x;

publicObjectgetY()returny;

publicvoidsetY(Objecty)this.y=y;

此时,Point类完成了。

此时,设置一个整型数字,那么来观察是否可以操作:

packageorg.lxh.genericsdemo01;

publicclassGenDemo01publicstaticvoidmain(Stringargs)Pointp=newPoint();

p.setX(11);

/int-Integer-Objectp.setY(20);

/int-Integer-Objectintx=(Integer)p.getX();

/取出x坐标inty=(Integer)p.getY();

/取出y坐标北京北京MLDN软件实训中心软件实训中心联系电话:

010-51283346第(3)页共(15)页E-Mail:

System.out.println(x的坐标是:

+x);

System.out.println(y的坐标是:

+y);

此时,达到了设置整数的目的,那么下面继续完成设置小数的操作。

publicclassGenDemo02publicstaticvoidmain(Stringargs)Pointp=newPoint();

p.setX(11.3f);

p.setY(20.3f);

floatx=(Float)p.getX();

/取出x坐标floaty=(Float)p.getY();

/取出y坐标System.out.println(x的坐标是:

下面继续设置字符串作为x和y的坐标。

publicclassGenDemo03publicstaticvoidmain(Stringargs)Pointp=newPoint();

p.setX(东经度);

p.setY(北纬度);

Stringx=(String)p.getX();

/取出x坐标Stringy=(String)p.getY();

此时,基本的功能已经完成了,但是此种操作是否存在问题呢?

在此操作之中,可以发现所有的内容都是以Object进行操作的,那么就意味着,可以设置任意的类型,即:

X可以是整型,Y可以是字符串。

publicclassGenDemo04publicstaticvoidmain(Stringargs)Pointp=newPoint();

p.setX(10);

intx=(Integer)p.getX();

北京北京MLDN软件实训中心软件实训中心联系电话:

010-51283346第(4)页共(15)页E-Mail:

此时程序在编译的时候没有任何的问题,但是在执行的时候出现了以下的错误提示:

Exceptioninthreadmainjava.lang.ClassCastException:

java.lang.Stringcannotbecasttojava.lang.Integeratorg.lxh.genericsdemo01.GenDemo04.main(GenDemo04.java:

9)之所以会这样,因为在程序中的所有的属性都可以向Object进行转换,那么此时程序的入口就显得不那么规范了,而且存在安全的漏洞。

但是,从之前所学习过的全部代码来看,此处只能应用到这里了。

没有更好的方法了。

3.2、JDK1.5的新特性的新特性泛型泛型JDK1.5之后出现了新的技术泛型,此技术的最大特点是类中的属性的类型可以由外部决定,而且在声明类的时候应该采用如下的形式:

class类名称那么现在使用如上的操作格式来修改之前的操作类。

packageorg.lxh.genericsdemo02;

publicclassPoint/表示坐标privateTx;

/x属性的类型由外部决定privateTy;

/y属性的类型由外部决定publicTgetX()returnx;

publicvoidsetX(Tx)this.x=x;

publicTgetY()returny;

publicvoidsetY(Ty)this.y=y;

此时,程序中加入了泛型操作之后,可以发现一切的操作类型此时都不再由程序固定设置,而是由实例化对象的时候在外部进行了指定。

publicclassGenDemo05publicstaticvoidmain(Stringargs)Pointp=newPoint();

p.setY(20);

intx=p.getX();

/取出x坐标北京北京MLDN软件实训中心软件实训中心联系电话:

010-51283346第(5)页共(15)页E-Mail:

inty=p.getY();

发现,此时在使用Point类的时候,需要加入一个属性类型的声明,而且加入之后再取出属性的时候本身也变得非常容易,不用再使用向下转型了。

而且,使用上面的操作有一点最方便之处,如果此时设置的内容不是整型,那么程序中将出现错误。

publicclassGenDemo06publicstaticvoidmain(Stringargs)Pointp=newPoint();

/错误,不能设置String类型intx=p.getX();

/取出x坐标inty=p.getY();

加入泛型之后,可以对程序的操作起到更加安全的目的。

3.3、泛型的其他注意点、泛型的其他注意点在使用泛型操作的时候,实际上有很多小的注意点,例如:

构造方法上依然可以使用泛型或者有一种称为泛型的擦除。

3.3.1、在构造方法上引用泛型、在构造方法上引用泛型一般开发中,经常使用构造方法设置属性的内容。

那么此时实际上构造方法上依然可以使用泛型的类型。

packageorg.lxh.genericsdemo03;

/y属性的类型由外部决定publicPoint(Tx,Ty)this.setX(x);

this.setY(y);

publicTgetX()returnx;

publicvoidsetX(Tx)北京北京MLDN软件实训中心软件实训中心联系电话:

010-51283346第(6)页共(15)页E-Mail:

this.x=x;

那么此时在调用的时候就需要使用构造方法设置内容,当然,设置的内容本身依然由泛型指定。

publicclassGenDemo07publicstaticvoidmain(Stringargs)Pointp=newPoint(10,20);

3.3.2、擦除泛型、擦除泛型如果在使用的时候没有指定泛型的话,则表示擦除泛型。

泛型一旦擦出之后,将按照Object进行接收,以保证程序不出现任何的错误。

publicclassGenDemo08publicstaticvoidmain(Stringargs)Pointp=newPoint(10,20);

但是在以上的操作代码中依然会存在警告信息,那么该如何去掉警告信息呢?

010-51283346第(7)页共(15)页E-Mail:

System.out.println(y的坐标是:

但是,以上的操作虽然去掉了警告信息,但是有些多余了,而且有些有搞笑。

3.4、通配符、通配符在泛型的操作中通配符使用较多,而且在日后的系统类库中有很多的地方都要使用这些操作

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 纺织轻工业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1