分享
 
 
 

JDK 5介绍(by kingoal)

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

“JDK 5”的最大的变化是使用诸如范型,for-each循环,自动装箱/拆箱,枚举,变参数,静态引入

(imports)和注释来简化开发,其在语言的层次上提供对程序开发更清晰,更简短和更安全的支持。

范型,for-each和自动装箱/拆箱

范型使得你定义集合(collection)的元素类型,其胜于定义一个列表(list),(定义它的内容),像String一样。举个例子,下面的代码使用新的for-each语法来叙述出在一个集合中的TimerTasks的列表,同时注意到其缺少类型变换(casting)和非常容易理解的循环语法。

void cancellAll(Collection c)

{

for (TimerTask task : c)

{

task.cancel();

}

}

在1.4和5.0中,字节码是一样的,只不过是转换一下代码而已。常听见一些网友说为什么使用:而不使用in呢?这个问题的答案有两方面的,第一in已经是一个关键字了(举个例子在System.in),同时是不希望引入新的关键词。在JDK 5中只是引入了一个新的关键字:enum。

自动装箱:自动地将int变换为Integer

拆箱:自动地将Integer变换为int

举例如下,你可以很容易地做下面的事情:

Integer i = new Integer(5);

Map map = new HashMap();

map.put("result", i+1);

你会注意到上面的一个例子,先是将Integer类型转换为int,然后进行加法,最后又将装箱为Integer,并且将其放到Map中去。很酷,是吗?^_^

JDK 5简化了反射功能,类class更加通用(generified)了---Foo.class是类型Class。这使得在编译期能够类型安全地反射w/o转换。下面的代码返回来一个对象以及进行一些必须的变换。

Foo foo = Foo.class.newInstance();

什么时候将使用范型呢?

随时都可以使用范型,除非你运行在5.0之前的java虚拟机上面。

什么时候使用for-each循环?

可以随时使用,因为其能够美化你的代码,并且使得更加简单地实现。虽然其为5.0中最小的新的特性,但是其是人们最喜欢的一个特性。但是在下面的情况下不能使用for-each:

l 在集合中删除元素(因为没有iterator)

l 修改一个数组或者列表的当前的slot(因为隐藏了index)

l 在多个集合或者数组中iterate

Enums

JDK 5在语言层次上支持枚举类型。

enum Season { WINTER, SPRING, SUMMER, FALL }

枚举是可以比较和序列化的。枚举的常量是跟普通的常量是一样的。

变参数

有一种用任意数量的值作为参数的方法是使用数组。但是使用Varargs(变参数)能够自动完成并且隐藏了其具体的过程。James Gosling使用…语法。一般的,Varargs一般是最后一个参数。在JDK 5中,MessageFormat.format函数已经使用varargs进行重写了。

public static String format(String pattern, Object... arguments);

String result = MessageFormat.format("At {1,time} on {1,date}, there was {2} on planet "

+ "{0,number,integer}.", 7, new Date(),

"a disturbance in the Force");

使用Varargs使得反射更加简单

因此你可以使用c.getMethod(“test”).invoke(c.newInstance())而不是使用c.getMethod(“test”,new Object[0]).invoke(c.newInstance(),new Object[0])).

什么时候将使用变参数啊?

1. 如果设计自己的API的时候,请保守地使用

2. 当benefit是强制的时候,不要重载varargs方法

3. 在客户端中,当API支持:反射,消息格式化,printf

静态引入

客户端常要限定类里面的静态成员(Math.PI)。为了避免这个,一些程序员将一些常量放到接口中,并且实现了它。BAD(常数接口反模式)。在JDK---java.util.jar中也是错误地用了这种模式。静态地引入能够毫无限制地访问静态成员。所有静态的属性,方法等等将在使用静态引入之后都能够获得。

import static java.lang.Math.*;

r = cos(PI * theta);

什么时候将使用静态引入?

最好少用----过度地使用会使得程序很难读。当有可能滥用继承的时候使用它

元数据

使用额外的信息来装饰程序。注释不会影响程序的语义。但是在使用工具或者库的时候能够影响使用者态度。能够从下面来读出来,源代码,类文件等等。像@deprecated,transient等等。jdk 5.0提供了更加通用的元数据工具。

为什么使用元数据呢?

很多的API需要一些样本文件,像JAX-RPC等等

l 像很多的API需要维护的”side files”,像BeanInfo类,部署描述符

l 很多API使用有名的模式,像JUnit

元数据鼓励使用声明式编程样式---告诉计算机将做什么,现在还有怎么去做。注释类型声明跟接口声明一样。特殊的注释类型包括标记注释和单元素注释。

在新发布的JDK1.5/J2SE 5带了一组新的试验工具。

性能监测工具jconsole ,jps,jstat,jstatd。同时一些新的故障发现和修改工具也可以下载了。这些工具能够显示内存表,在线程中生成堆栈跟踪,以及给一个进程或者核心打印配置信息。

监测,管理工具

jconsole:J2SE监测和管理控制台---一个同JMX兼容的监测Java虚拟机的图形工具。其能够监视当地或者远程的Java虚拟机。

jps:java虚拟机进程状态工具---在目标系统上列出装备有HotSpot Java的虚拟机

jstat:java虚拟机统计监视工具---附加到一个装备了HotSpot的java虚拟机上来采集并且记录性能统计情况

jstatd:java虚拟机的jstat守护程序---启动一个RMI服务器程序来监视各个HotSpot java虚拟机的创建和中止。并且提供了一个访问远程监视工具接入的接口。

故障工具

l jinfo:java的配置信息。打印出一个给定的进程或者核心文件或者远程debug服务器的配置信息。

l jsadebugd:Java实用Agent调试守护进程----连接一个进程或者一个核心文件,使得其运行像一个调试服务器。

l jmap:Java内存映射----打印共享对象内存映射或者一个给定的进程或者核心对象或者远程调试服务器上堆内存的细节

l jstack:Java堆栈跟踪---打印出给定的进程或者核心文件或者远程调试服务器的线程的堆栈跟踪信息

另外在JDK里面,还带有很多常用的标准的工具:

如基本工具(javac,java,javadoc,apt,appletviewer,jar,jdb,javah,javap,extcheck)

安全工具(keytool,jarsigner,policytool,kinit,klist,ktab)

国际化工具(native2ascii)

远程方法调用(RMI)工具(rmic,rmiregistry,rmid,serialver)

Java IDL和RMI-IIOP工具(tnameserv,idlj,orbd,servertool)

Java部署工具(pack200,unpack200)

Java插件工具(htmlconverter)

Java Web Start tools(javaws)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有