文档章节

JDK1.5新增的功能

卡迪奈尔
 卡迪奈尔
发布于 2016/07/05 10:11
字数 954
阅读 4
收藏 0

"JDK1.5"的一个重要主题就是通过新增一些特性来简化开发,这些特性包括泛型,for-each 循环,自动装包/拆包,枚举,可变参数, 静态导入 。使用这些特性有助于我们编写更加清晰,精悍,安全的代码。 

下面我们简单介绍一下这些新特性。 
1.泛型(Generic) 
C++通过模板技术可以指定集合的元素类型,而Java在1.5之前一直没有相对应的功能。一个集合可以放任何类型的对象,相应地从集合里面拿对象的时候我们也不得不对他们进行强制得类型转换。猛虎引入了泛型,它允许指定集合里元素的类型,这样你可以得到强类型在编译时刻进行类型检查的好处。 
Collection c = new ArrayList(); 
c.add(new Date()); 
编译器会给出一个错误, 
add(java.lang.String) in java.util.Collection cannot be applied to (java.util.Date) 


2.For-Each循环 
For-Each循环得加入简化了集合的遍历。假设我们要遍历一个集合对其中的元素进行一些处理。典型的代码为: 
void processAll(Collection c){ 
for(Iterator i=c.iterator(); i.hasNext();){ 
MyClass myObject = (MyClass)i.next(); 
myObject.process(); 


使用For-Each循环,我们可以把代码改写成, 
void processAll(Collection c){ 
for (MyClass myObject :c) 
myObject.process(); 

这段代码要比上面清晰许多,并且避免了强制类型转换。 


3.自动装包/拆包(Autoboxing/unboxing) 
自动装包/拆包大大方便了基本类型数据和它们包装类地使用。 
自动装包:基本类型自动转为包装类.(int >> Integer) 
自动拆包:包装类自动转为基本类型.(Integer >> int) 
在JDK1.5之前,我们总是对集合不能存放基本类型而耿耿于怀,现在自动转换机制解决了我们的问题。 
int a = 3; 
Collection c = new ArrayList(); 
c.add(a);//自动转换成Integer. 

Integer b = new Integer(2); 
c.add(b + 2); 
这里Integer先自动转换为int进行加法运算,然后int再次转换为Integer. 


4.枚举(Enums) 
JDK1.5加入了一个全新类型的“类”-枚举类型。为此JDK1.5引入了一个新关键字enmu. 我们可以这样来定义一个枚举类型。 

public enum Color 

Red, 
White, 
Blue 

然后可以这样来使用Color myColor = Color.Red. 
枚举类型还提供了两个有用的静态方法values()和valueOf(). 我们可以很方便地使用它们,例如 
for (Color c : Color.values()) 
System.out.println(c); 

5.可变参数(Varargs) 
可变参数使程序员可以声明一个接受可变数目参数的方法。注意,可变参数必须是函数声明中的最后一个参数。假设我们要写一个简单的方法打印一些对象, 
util.write(obj1); 
util.write(obj1,obj2); 
util.write(obj1,obj2,obj3); 
… 
在JDK1.5之前,我们可以用重载来实现,但是这样就需要写很多的重载函数,显得不是很有效。如果使用可变参数的话我们只需要一个函数就行了 
public void write(Object... objs) { 
for (Object obj: objs) 
System.out.println(obj); 

在引入可变参数以后,Java的反射包也更加方便使用了。对于c.getMethod("test", new Object[0]).invoke(c.newInstance(), new Object[0])), 
现在我们可以这样写了c.getMethod("test").invoke(c.newInstance()),这样的代码比原来清楚了很多。 


6.静态导入(Static Imports) 
要使用用静态成员(方法和变量)我们必须给出提供这个方法的类。使用静态导入可以使被导入类的所有静态变量和静态方法在当前类直接可见,使用这些静态成员无需再给出他们的类名。 
import static java.lang.Math.*; 
……. 
r = sin(PI * 2); //无需再写r = Math.sin(Math.PI); 
不过,过度使用这个特性也会一定程度上降低代码地可读性。 

本文转载自:http://www.cnblogs.com/CQITCS02370236/archive/2006/02/27/339198.html

共有 人打赏支持
卡迪奈尔
粉丝 3
博文 24
码字总数 13740
作品 0
朝阳
私信 提问
eRedG4_v1.01发布了(全面支持Mysql)

2010-12-08发布V1.0后,4天时间GoogleCode下载人次近600人次。作者倍受鼓舞,同时也受到很多网友的反馈和建议。特将最迫切的几个完善后发布V1.01版本! 2010-12-12 eRedG4_V1.01版本发布 (1)全...

红薯
2010/12/14
483
2
Java之枚举,程序员应该掌握的开发技巧「简洁易懂又安全的代码」

java枚举 背景 JDK1.5引入了新的类型——枚举,枚举类型提高了代码的 简洁性、安全性以及便捷性 。 学习目标 学会枚举的基本用法 利用枚举去设计业务功能 代码举例 码农汪,在写一个新增内容...

jamesese
2018/06/08
0
0
Mybatis-Plus 1.2.11 发布,MyBatis 增强工具包

Mybatis-Plus 1.2.11 发布了,Mybatis-Plus是一款MyBatis的增强工具包,简化 CRUD 操作。启动加载 XML 配置时注入单表 SQL 操作 ,为简化开发工作、提高生产率而生。Mybatis-Plus 启动注入非...

青苗
2016/04/18
2.1K
7
jdk1.5相比jdk1.4多的新特性

"JDK1.5"(开发代号猛虎)的一个重要主题就是通过新增一些特性来简化开发,这些特性包括泛型,for-each 循环,自动装包/拆包,枚举,可变参数, 静态导入 。使用这些特性有助于我们编写更加清...

林俊龙
2013/04/13
0
2
NetBeans5.5与Eclipse3.2.1的比较

版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/1523530 NetBeans5.5与Eclipse3.2.1的比较 今天无意中发现NetBeans5.5不如Ecl...

chszs
2007/03/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

dockerfile 镜像构建(1)

通用dockerfile 利用已经编译好的.jar 来构建镜像。要构建的目录如下: [root@iZuf61quxhnlk9m2tkx16cZ demo_jar]# docker build -t demo:1 . 运行镜像: [root@iZuf61quxhnlk9m2tkx16cZ de...

Canaan_
13分钟前
0
0
Redis radix tree源码解析

Redis实现了不定长压缩前缀的radix tree,用在集群模式下存储slot对应的的所有key信息。本文将详述在Redis中如何实现radix tree。 核心数据结构 raxNode是radix tree的核心数据结构,其结构体...

阿里云云栖社区
15分钟前
3
0
vue import 传入变量

在做动态添加component的时候,传入变量就会报错,出现以下错误信息: vue-router.esm.js?fe87:1921 Error: Cannot find module '@/components/index'. at eval (eval at ./src/components ......

朝如青丝暮成雪
17分钟前
0
0
Flutter开发 Dio拦截器实现token验证过期的功能

前言: 之前分享过在Android中使用Retrofit实现token失效刷新的处理方案,现在Flutter项目也有“token验证过期”的需求,所以接下来我简单总结一下在Flutter项目中如何实现自动刷新token并重...

EmilyWu
19分钟前
5
0
final Map可以修改内容,final 常量不能修改

1.final Map 可以put元素,但是不可以重新赋值 如: final Map map = new HashMap(); map = new HashMap();//不可以 因为栈中变量map引用地址不能修改 2.final str = “aa”; str = "bb";/......

qimh
22分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部