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

目录
相关文章
|
2月前
|
容器
jdk8新特性-详情查看文档
jdk8新特性-详情查看文档
43 3
|
1月前
|
存储 安全 Java
JDK1.8 新的特性
JDK1.8 新的特性
19 0
|
2月前
|
编解码 安全 Java
jdk8新特性-接口和日期处理
jdk8新特性-接口和日期处理
|
3月前
|
Java API
JDK8到JDK25版本升级的新特性问题之使用Collectors.teeing()来计算一个列表中学生的平均分和总分如何操作
JDK8到JDK25版本升级的新特性问题之使用Collectors.teeing()来计算一个列表中学生的平均分和总分如何操作
|
3月前
|
Java API Apache
JDK8到JDK24版本升级的新特性问题之在Java中,HttpURLConnection有什么局限性,如何解决
JDK8到JDK24版本升级的新特性问题之在Java中,HttpURLConnection有什么局限性,如何解决
|
3月前
|
Oracle Java 关系型数据库
JDK8到JDK29版本升级的新特性问题之未来JDK的升级是否会成为必然趋势,如何理解
JDK8到JDK29版本升级的新特性问题之未来JDK的升级是否会成为必然趋势,如何理解
|
3月前
|
Oracle 安全 Java
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
|
3月前
|
Java API 开发者
JDK8到JDK17版本升级的新特性问题之SpringBoot选择JDK17作为最小支持的Java lts版本意味着什么
JDK8到JDK17版本升级的新特性问题之SpringBoot选择JDK17作为最小支持的Java lts版本意味着什么
120 0
JDK8到JDK17版本升级的新特性问题之SpringBoot选择JDK17作为最小支持的Java lts版本意味着什么
|
2月前
|
Java 编译器 API
JDK8新特性--lambda表达式
JDK8的Lambda表达式是Java语言的一大进步。它为Java程序提供了更多的编程方式,让代码更加简洁,也让函数式编程的概念在Java中得到了体现。Lambda表达式与Java 8的其他新特性,如Stream API、新的日期时间API一起,极大地提高了Java编程的效率和乐趣。随着时间的流逝,Java开发者对这些特性的理解和应用将会越来越深入,进一步推动Java语言和应用程序的发展。
13 0
|
3月前
|
算法 Java iOS开发
JDK8到JDK27版本升级的新特性问题之JDK 17中G1在资源占用方面有何变化
JDK8到JDK27版本升级的新特性问题之JDK 17中G1在资源占用方面有何变化