“JDK1.5”(开发代号猛虎)的一个重要主题就是通过新增一些特性来简化开发,这些特性包括泛型、For-each循环、自动装包/拆包、枚举、可变参数、静态导入。使用这些特性有助于我们编写更加清晰、精悍、安全的代码。
下面我们简单介绍一下这些新特性。
1.泛型(Generic)
2.For-Each循环
3.自动装包/拆包(Autoboxing/unboxing)
4.枚举(Enums)
5.可变参数(Varargs)
6.静态导入(Static Imports)
1.泛型(Generic)
C++通过模板技术可以指定集合的元素类型,而Java在1.5之前一直没有相对应的功能。一个集合可以放任何类型的对象,相应地从集合里面拿对象的时候我们也不得不对他们进行强制得类型转换。猛虎引入了泛型,它允许指定集合里元素的类型,这样你可以得到强类型在编译时刻进行类型检查的好处。
Collection<String><string></string><string></string> c = new ArrayList(); c.add(new Date()); |
编译器会给出一个错误:
add(java.lang.String) in java.util.Collection<java.lang.string></java.lang.string> 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<myclass></myclass> c) { for (MyClass myObject : c) myObject.process(); } |
这段代码要比上面清晰许多,并且避免了强制类型转换。
int a = 3; Collection c = new ArrayList(); c.add(a); //自动转换成Integer Integer b = new Integer(2); c.add(b + 2); |
public enum Color { Red, White, Blue } |
for (Color c : Color.values()) System.out.println(c); |
util.write(obj1); util.write(obj1, obj2); util.write(obj1, obj2, obj3); … |
public void write(Object... objs) { for (Object obj : objs) System.out.println(obj); } |
import static java.lang.Math.*; ……. r = sin(PI * 2); //无需再写 r = Math.sin(Math.PI); |