5

刚才在看一个代码教程,发现了一些有趣的东西import static——JDK 5 中引入的特性:

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

4 回答 4

9

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

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

(当然,如问题中所述,静态导入和注释。)

正如 Zwei 的回答所提到的,java.util.concurrent这也是 Java 5 的一个主要特性,而且,JSR-133 及其内存模型发生了变化(允许volatile以一种理智的方式工作,所以如果你愿意,你可以安全地实现双重检查锁定)。

Java 6 没有任何语法更改(我记得);它的许多影响很大的变化都与性能有关。就库而言,我最喜欢的“Java 6 新手”库是脚本支持 ( javax.script)。

于 2010-03-04T05:25:07.833 回答
4

绝对是java.util.concurrent!!!

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

于 2010-03-04T05:28:35.393 回答
3

我将继续发布一个:Java Web Start 小程序支持

我喜欢玩JOGL,能够只使用一个简短的 jnlp 文件而不必编写类加载器、下载本机库代码的代码等来处理通过浏览器获取 JOGL 真是太好了。(是的,我知道 JOGL 的 appletloader 的事)

我的 JNLP 文件中只有一行加载了 JOGL jars、它的依赖项(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中引入的。

于 2010-03-04T05:22:23.020 回答
3

在 Chris Jester-Young 的列表中添加

  • 可变参数
  • 注释

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

于 2010-03-04T05:29:17.357 回答