JDK5.0新特性之:其他

文/陈刚 2005-11-26  

一、自动装箱与拆箱

  这是一个很体帖的改进。在JDK5.0以前我们常看到下面的代码。

        Vector v=new Vector();
        v.add(new Integer(1));

  因为Vector.add只接受对象,而1不是对象,所以我们还得把整数1装箱到Integer对象里,真麻烦:( 。现在我们可以这样了,是不是方便许多呢?如下:

        Vector<Integer> v=new Vector<Integer>(1);
        v.add(1);

二、新的for循环

  在前面讲枚举的时候已经用到了,再把进面的代码粘贴一次吧,如下:

        Color[] colors = Color.values();
        for (Color c : colors) {
            System.out.println("color value=" + c.getColorValue());
        }

  注意:不要以为Color[]是数组,就以为for-each循环只适用于数组,对于集合(List、Set)一样可以的,如下:

        List<String> list = new ArrayList<String>();
        for (String str : list) {
            System.out.println(str);
        }

三、参数个数的可变性

  参数的个数是可变的,如下代码中的test方法就是一个int型的可变参数,当然你可以将参数设成String、Object等。

public class Test {
    public static void main(String[] args) {
        test();
        test(1);
        test(2, 3, 4);
    }
    public static void test(int... ints) {
        for (int i : ints) {
            System.out.println(i);
        }
    }
}

四、静态引用

  什么是静态引用,先看下面的代码:

package jdk5;
public class Model {
    public static void operate() {}
    public static String ABC;
}

Model类有一个静态方法operate和一个静态变量(必须是静态的),这是一个很普通的类。而下面的Test类就有些奇怪了:

package jdk5;
import static jdk5.Model.ABC;
import static jdk5.Model.operate;
public class Test {
    public static void test() {
        operate();
        String s = ABC;
    }
}

有那些奇怪的地方呢?

(1)import 后面多了一个static
(2)jdk5.Model后面多写了方法operate和变量ABC

  有了上面奇怪的写法之后,以后在Test类中要使用import static的方法、变量就可以象本地方法和变量一样用了。

五、C风格格式化输出

  以前我们在这里写代码:

    public static void main(String[] args) {
        int x = 10;
        int y = 20;
        int sum = x + y;
        System.out.printf(x + " + " + y + " = " + sum);
    }

  在JDK5.0后,我们这样写代码:

    public static void main(String[] args) {
        int x = 10;
        int y = 20;
        int sum = x + y;
        System.out.printf("%d + %d = %d", x, y, sum);
    }

  两段代码的效果都是一样的“10 + 20 = 30”,但第二种C风格的写法显示方便易读多了。

六、元数据(注解)

  这是JDK5.0学XDoclt的,有了注解,以后我们可以不必写接口,EJB写起来会方便很多。EJB3.0要精简写法,注解要占一些功劳。

  介绍一个常用的注解:@Override,示例如下:

public class Test extends ATest{

@Override
    public void test() {
    }
}

 在方法前加了这个注解,就限定死了Test的这个方法一定要是覆盖自ATest的方法test,否则就会报错。比如你不心把方法test()写成了tesd(),编译时就会报错。另一个要注意的是@Override用于定义覆盖接口的方法,也就是说ATest必须是一个抽象类、普通类,但不能是接口。

   另一个常见到的注解是@Deprecated,表明该项(类、字段、方法)不再被推荐使用。不过我们自己一般很少用到这个注解。

  好了,注解只讲这两个吧,也不必了解太多,知道个概念,以后用到的时候再说吧。关于注解,建议看看XDoclt,这是一个开源小工具,在项目开发中非常好用。

作者简介

陈刚,广西桂林人,著作有《Eclipse从入门到精通》
您可以通过其博客了解更多信息和文章:http://www.chengang.com.cn

上一篇:使用OPATCH_DEBUG环境变量调试Opatch工具


下一篇:CentOS 7.0 使用Vsftpd服务传输文件