Java 5和6中最有用或最有趣的新语言功能?

Java 5和6中最有用或最有趣的新语言功能?,java,language-features,jdk1.6,jdk1.5,Java,Language Features,Jdk1.6,Jdk1.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); /

我刚刚浏览了一个代码教程,发现了一些有趣的东西——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中最能改变游戏规则的功能是什么。

我将继续介绍一个:Java Web Start小程序支持

我喜欢玩,能够只使用一个简短的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,仅此而已

顺便说一下,这是在中引入的。

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

  • 仿制药
  • 列举
  • 对于每个循环
  • 自动装箱和自动拆箱
  • 协变收益
  • 可变函数
(当然,正如问题中提到的,静态导入和注释。)

正如Zwei的回答所提到的,
java.util.concurrent
也是Java5的一个主要特性,而且JSR-133及其内存模型也发生了变化(这使得
volatile
能够正常工作,因此如果您愿意,可以安全地实现双重检查锁定)

Java6没有任何语法变化(我记得);它的许多影响很大的变化都是错误的。在库方面,我最喜欢的“Java6新手”库是脚本支持(
javax.script
)。

绝对是


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

到Chris Jester Young的列表添加中

  • 瓦拉格斯
  • 注释

但我真正期待的是

您可以通过这里的示例了解Java 5中引入的新功能

@Tom(我会说@tackline,但这不会突出显示您的名字):是的,我怎么会忘记这些呢。现在添加它们。:-)因为这里没有确定的“答案”,只有主观的意见,这可能应该是社区维基…我想说你从他的答案中的评论中抓取了这个,但看起来你在一条评论发布之后和另一条评论发布之前就回答了,所以对你来说+1:)