Java 5和6中最有用或最有趣的新语言特性是什么?

5

我刚刚在看一篇关于编程的教程,发现了一个有趣的东西——JDK 5中引入的import static功能:

import static org.junit.Assert.assertEquals;

public class AdditionTest {

  private int x = 1;
  private int y = 1;

  @Test public void addition() {
    int z = x + y;
    assertEquals(2, z);
    /* ^ this is a static method, normally called by Assert.assertEquals */
  }

}

这让我想到了,JDK 5和6中还有哪些其他特性我不知道呢?是否还有其他像这样的新关键字用法?是否有任何值得注意的新库类或函数?

我知道发布说明或更改日志已经存在,我不需要一个“RTFM”的答案。我想知道你认为JDK 5或6中最具有变革性的功能的简短列表。

4个回答

9

Java 5有很多语法改变,最重要的(我记得)是:

  • 泛型
  • 枚举
  • For-each循环
  • 自动装箱和拆箱
  • 协变返回类型
  • 可变参数函数

(当然,如问题中所述,静态导入和注释也是其中之一。)

正如Zwei的答案所提到的,java.util.concurrent也是Java 5的一个重要特性,此外,JSR-133及其内存模型的更改(允许volatile以合理的方式工作,因此如果您想实现双重检查锁定,则可以安全地实现)。

Java 6没有任何语法改变(我记得);它的许多高影响力的变化都与性能相关。在库方面,我最喜欢的“新的Java 6”库是脚本支持(javax.script)。


4

当然,java.util.concurrent非常重要!!!

在Java6中,ConcurrentSkipListMap作为这个包的一种新数据结构被添加进来,它实际上拯救了我们的项目 :)


3
我来翻译一下:

我先提出一个: Java Web Start applet支持

我喜欢尝试 JOGL,使用一个简短的jnlp文件就可以轻松使用,而不必编写类加载器、下载本地库代码等等,以处理通过浏览器获取JOGL。 (是的,我知道JOGL的appletloader)

只需在我的JNLP文件中添加一行即可加载JOGL jar文件,其依赖项(gluegen,nativewindow,newt)以及当前系统的适当本地库。

<extension name="JOGL"
    href="http://download.java.net/media/jogl/builds/archive/jsr-231-2.0-beta10/webstart/jogl-all-awt.jnlp" />

我的jnlp文件的其余部分仅涉及应用程序的标题和其JAR文件的URL,就这些。
顺便说一下,这是在JDK 6u10中引入的。

3

请在Chris Jester-Young的列表中添加以下内容:

  • 可变参数
  • 注解

但我真正期待的是函数式编程构造。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接