jdk5.0中出现的新特性
• 泛型(Generics)
• 增强的“for”循环(Enhanced For loop)
• 自动装箱/自动拆箱(Autoboxing/unboxing)
• 类型安全的枚举(Type safe enums)
• 静态导入(Static import)
• 可变参数(Var args)
(一)泛型
泛型是JDK1.5中一个最重要的特征。通过引入泛型,我们将获得编译时类型的安全和运行时更小地抛出ClassCastExceptions的可能。
1) 简单泛型类的定义
public class Pair<T> { private T first; private T second; public Pair() { first = null; second = null; } public Pair(T first, T second) { this.first = first; this.second = second; } public T getFirst() { return first; } public void setFirst(T first) { this.first = first; } public T getSecond() { return second; } public void setSecond(T second) { this.second = second; } }
Pair类引入了一个类型变量T,用<>括起来,并放在类名的后面。泛型类可以有多个类型变量。例如:
public class Pair<T,U>{}
类定义中的类型变量指定方法的返回类型以及域和局部变量的类型。
在java库中,使用变量E表示集合的元素类型,K和V分别表示表的关键字与值的类型。T表示任意类型。
2)泛型方法
public class ArrayAlg { public static <T> T getMiddle(T[] a) { return a[a.length /2]; } }
3) 限制泛型可用类型
在定义泛型类别时,预设可以使用任何的类型来实例化泛型类型中的类型,但是如果想要限制使用泛型类别时,只能用某个特定类型或者是其子类型才能实例化该类型时,可以在定义类型时,使用extends关键字指定这个类型必须是继承某个类,或者实现某个接口
public static <T extends Comparable> T min(T[] a)
当没有指定泛型继承的类型或接口时,默认使用T extends Object,所以默认情况下任何类型都可以作为参数传入
4)通配符类型
現在您有這麼一個需求,您希望有一個參考名称foo可以接受所有下面的实例
foo = new GenericFoo<ArrayList>();
foo = new GenericFoo<LinkedList>();
简单的说,实例化类型持有者时,它必須是实现List的类别或其子类别,要定义这样一个名称,您可以使用 ‘?’ 通配字元,并使用“extends”关键字限定类型持有者的型态
GenericFoo<? extends List> foo = null;
使用<?>或是<? extends SomeClass>的声明方式,意味著您只能通过该名称來取得所参考实例的信息,或者是移除某些信息,但不能增加它的信息,因为只知道当中放置的是SomeClass的子类,但不确定是什么类的实例,编译器不让您加入信息,理由是,如果可以加入信息的話,那么您就得記得取回的实例是什么类型,
然后转换为原來的类型方可进行操作,这就失去了使用泛型的意义。
(二)For-Each循环
for(type element : array) {
System.out.println(element)....
}
(三)自动装箱/拆箱
自动装箱/拆箱大大方便了基本类型数据和它们包装类的使用。
自动装箱:基本类型自动转为包装类.(int >> Integer)
自动拆箱:包装类自动转为基本类型.(Integer >> int)
Integer 类有一个缓存,它会缓存介于-128~127之间的整数。
(四)枚举
JDK1.5加入了一个全新类型的“类”-枚举类型。为此 JDK1.5引入了一个新关键字enum. 我们可以这样来定 义一个枚举类型
public enum Color
{
Red,
White,
Blue
}
然后可以这样来使用Color myColor = Color.Red.
枚举类型还提供了两个有用的静态方法values()和valueOf().
当您使用“enum”定义 枚举类型时,实质上您定义出來的类型继承自 java.lang.Enum 类型,而每个枚举
的成员其实就是您定义的枚举类型的一個实例(Instance),他们都被预设为 final,所以您无法改变他们,他
们也是 static 成員,所以您可以通过类型名称直接使用他们,当然最重要的,它們都是公开的(public)。
(五)静态导入
要使用静态成员(方法和变量)我们必须给出提供这个静态成员的类。使用静态导入可以使被导入类的所有静态变量和静态
方法在当前类直接可见,使用这些静态成员无需再给出他们的类名
a) import static com.shengsiyuan.common.Common.Age;
b) import static com.shengsiyuan.common.Common.output;
(六)可变参数
可变参数使程序员可以声明一个接受可变数目参数的方法。注意,可变参数必须是方法声明中的最后一个参数
相关推荐
转载 jdk1.5的一些新特性,希望能帮助大家!
JDK1.5新特性
jdk1.5新特性 泛类型和泛型方法是Java5.0 中的新特性。一种泛类型用一个或多个泛型变量定义,可以有一个或多个,泛型变量做参数占位符或做返回值 的方法。
1.增强的for循环【foreach{}迭代数组或集合】 格式:for(变量的类型 变量名:集合变量名 ){} 注意:集合变量可以是数组或实现了... 格式:import static java.lang.Math.* 注意:这时候的导入就需要加类名了
jdk1.5 tiger java5 新特性
java sdk1.5 新特性 JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet和应用程序的程序开发环境。它由一个处于操作系统层之上的运行环境还有开发者编译,调试和运行用Java语言写的applet和...
Java的泛型和动态参数,以及for循环的使用Connections类的详解,list,set的详解
jdk1.5的新特性,java基础加强部分
Java JDK1.5后新特性,用Lock和Condtion对象解决线程安全问题,提高了效率。
jdk1.5的以后的技术,例如泛型,枚举,注释的基本使用方法,给刚学习java的朋友一些不错的介绍
JDK1.5新特性中的最重要的一点。让你彻底明白增强for循环的强大和方便
Java 5.0发布了,许多人都将开始使用这个JDK版本的一些新增特性。从增强的for循环到诸如泛型(generic)之类更复杂的特性,都将很快出现在您所编写的代码中。我们刚刚完成了一个基于Java 5.0的大型任务,而本文就是要...
JDK1.5、1.6、1.7新特性,详细介绍了JDK1.5 1.6和1.7的最新特性.
今天,JDK1.5終於內建泛型特性,不僅編譯器不再需要 任何外力(外掛附件)的幫助,整個 Java標準程式庫也被翻新(retrofit),許多 角落針對泛型做了改寫。 讓我們把帶有「參數化型別」(parameterized types)的 ...
jdk1.5 jdk1.6 jdk1.7新特性总结!很好的资源不要错过哦!
Enum是Sun全新引进的一个关键字,看起来很象是特殊的class,它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口。在声明一个enum类型时,应该注意到enum类型有如下的一些特征:
1.1 JDK7新特性<一>概述 ....1.5 JDK7新特性<五> fork/join 框架 . . . . . 1.6 JDK7新特性<六> 监听文件系统的更改 1.7 JDK7新特性<七> 遍历文件树 . . . . . . . 1.8 JDK7新特性<八>异步io/AIO . . . . . . . .
Jdk1.5、1.6、1.7之间的新特性,很详细。好东西,值得下载
java基础加强,JDK1.5新特性介绍,需要的朋友可以看看哦
主要介绍了Java JDK1.5、1.6、1.7新特性整理,需要的朋友可以参考下