优胜从选择开始,我们是您最好的选择!—— 中州期刊联盟(新乡市博翰文化传媒有限公司)
0373-5939925
2851259250@qq.com
我要检测 我要投稿 合法期刊查询
您的位置:网站首页 > 优秀论文 > 正文

Java型的研究与应用-科技论文

作者:中州期刊联盟来源:原创日期:2012-08-31人气:1105
在Java编程中,经常遇到众多对象的存取情况,比如在一个新闻系统中(假定新闻类为News),当从数据库中(即模型层)查询到某些新闻时,首先进行对象关系映射,也就是将每条新闻记录转变为一个News对象,然后再将News对象放入一个容器,在视图层显示时,从容器中将他们(News对象)一一取出,然后在视图层予以显示。
这个过程中,传统的处理方法是首先将News类作为Object类放入相应容器,读取时在再将容器中的每个对象(此时为Object类型)转型为对应的News类,然后进行相应的处理。
为了简单起见,我们用下面的代码来模拟上述过程。上述的处理过程很明了,但实际上隐含了一个错误,在程序的输出语句中,为了使用News类的方法,需要将对象强制转型为News类型,这个转型在编译阶段不会出现任何问题,但在运行时,却抛出ClassCastException转型异常,从而造成程序的异常终止。另外此程序的可读性也不好,因为我们在使用map容器取对象时,根本不知道其中存放的是什么对象。
在JDK1.4之前,在处理相似的问题时,别无他法,只能这样来处理,至于运行时异常,只能靠我们写程序时小心。
一、利用泛型解决上述问题
Java的泛型就是在定义的同时明确指名其类型,增强程序的可读性。同时类型的检查在编译阶段就可以完成,避免运行时的异常,从而使程序有更强的健壮性。
泛型的定义形式为:classJava_Generics<K,V>,这里边的K和V就像方法中的参数一样,代表类型。
在Java的类库中,使用变量E表示集合的元素类型,K和V分别表示关键字与值的类型。T(需要时还可以用临近的字母U和S)可以表示任意类型。
现在利用泛型来重写Test类中的main函数的部分关键代码,News类不变,更改如下:这段代码必须在JDK1.5或更高的版本上才能正确编译,注释掉的那行代码就是前面出现ClassCastException错误的原因。之所以被注释掉,是因为他在编译阶段就被发现了问题,必须做相应更改才能通过编译,提高了程序的健壮性。另外,当我们看到Map的定义的时候,很清楚能向Map中放入什么类型的对象,程序的可读性也大大增强。
基于上述示例的泛型应用在Java编程中的应用极为广泛,但都可以利用上述示例来方便的解决问题。在实际应用中,从容器中读出所有元素时,也可以利用Iterator指定。比如在一个List
容器中,把List转换为Iterator:Iteratorit=list.iterator();这是可以使用泛型的另外一个地方。
二、泛型使用应注意的问题
究竟什么类可以指定特定的对象,使用泛型呢?最简单有效的方法是查阅JDK的API帮助文档,凡是后面有或等尖括号的,就可以指定明确的类型
另外,在使用泛型编程时还要注意以下几点:
(1)不可以用一个基本类型(如intfloat)来替换泛型。
(2)泛型类不可以继承Exception类。
(3)不可以定义泛型数组。
(4)不可以用泛型构造对象,即:Newsnews=newT();是错误的。
(5)在static方法中不可以使用泛型,泛型变量也不可以用static关键字来修饰。
总之,在Java语言中使用泛型,会大大增强程序的易读性和健壮性,把隐含错误消除在编译阶段。学习如何使用泛型类型相当简单,但是同样也需要防范一些可能出现的错误。

网络客服QQ: 沈编辑

投诉建议:0373-5939925    投诉建议QQ:

招聘合作:2851259250@qq.com (如您是期刊主编、文章高手,可通过邮件合作)

地址:河南省新乡市金穗大道东段266号中州期刊联盟 ICP备案号:豫ICP备2020036848

【免责声明】:中州期刊联盟所提供的信息资源如有侵权、违规,请及时告知。

版权所有:中州期刊联盟(新乡市博翰文化传媒有限公司)

关注”中州期刊联盟”公众号
了解论文写作全系列课程

核心期刊为何难发?

论文发表总嫌贵?

职院单位发核心?

扫描关注公众号

论文发表不再有疑惑

论文写作全系列课程

扫码了解更多

轻松写核心期刊论文

在线留言