Java 1.7 里有什么?

下面是Java 1.7 里新出现的功能的一些用法例子:

对集合的支持

创建List / Set / Map 时写法更简单了。
[java]
List< String> list = ["item"];
String item = list[0];
Set< String > set = {"item"};
Map< String,Integer > map = {"key" : 1};
int value = map["key"];
[/java]

对资源的自动回收管理

下面的代码看起来有点麻烦 … 不是吗
[java]
BufferedReader br = new BufferedReader(new FileReader(path));
try {
return br.readLine();
} finally {
br.close();
}
[/java]
相信你一定会喜欢下面这种写法
[java]
try (BufferedReader br = new BufferedReader(new FileReader(path)) {
return br.readLine();
}
[/java]

泛型实例创建过程中类型引用的简化

当声明你的对象的接口是,你肯定是不想重复指明泛型类型
看看下面的这种写法多好呀…
[java]
Map<String,String> hello = new HashMap<>();
[/java]

在数字中使用下划线

[java]
int billion = 1_000_000_000;
[/java]
我不知道这个能有多少用处

对字符串进行switch case

[java]
String availability = "available";
switch(availability) {
case "available":
//code
break;

case "unavailable":
//code
break;

case "merged":
//code

default:
//code
break;
}
[/java]
注意:在把字符串传进Switch case之前,别忘了检查字符串是否为Null。

二进制符号

你可用作二进制字符前加上 0b 来创建一个二进制类型。
[java]
int binary = 0b1001_1001;
[/java]

一个catch里捕捉多个异常类型

[java]
try {
Here comes your code….
}
catch(IOException | NullPointerException | ……….) {
}
[/java]
如果有人能说出更多的新特征,那就更好了。我相信里面有更多的很酷的新东西。

[英文原文:What's Up in Java 1.7 ]
分享这篇文章:

33 Responses to Java 1.7 里有什么?

  1. huansinho says:

    说实在的JAVA7很多新特性说出来给其他语言的使用者听估计反应是:哦~~我们本来就有。。。。

  2. sir_nanxing says:

    方便多了~顶~

  3. simonliu says:

    @huansinho:但是 java 这么强大的虚拟机,别的语言就不一定有了。

  4. simonliu says:

    int billion = 1_000_000_000;
    在程序中写一个大数字的时候,这个特性的好处就体现出来了。尤其是下面提到的二进制写法,如果没有下划线的支持,真是看不清楚啊。

    集合的新语法支持真是非常方便。

    对字符串的 switch 真是支持的太晚了。

    • TonySeek says:

      但是硬编码本来也不是啥好习惯啊,还是觉得用到的机会不多。

    • Mouhong says:

      这个下划线确实不错,不过集合的新语法在借鉴C#,但感觉没有C#的直观,
      List list = [“item”];
      这句我一不小心就误以为是数组。
      还有这个:Map hello = new HashMap();
      相比这种语法,我还更喜欢C#的:
      var hello = new HashMap();
      (编译器会推断自动var的类型)

  5. kshen says:

    对字符串进行switch case这个方便多了。

  6. Jruv says:

    除了switch和数字下划线, 似乎python都有。

  7. johnny says:

    Map hello = new Map();
    这句不对,Map是一个接口,不可以实例化.
    应该是这样Map hello = new HashMap();
    这个是自动类型推断1.7新特性

  8. lovefeel2004 says:

    在编程方便性方面java越来越像PHP了,在面向对象方面PHP越来越像JAVA了

  9. tongDou says:

    try {
    Here comes your code….
    }
    catch(IOException | NullPointerException | ……….) {
    }
    这样写虽然方便了,但是有点奇怪。

  10. jason says:

    说实在的,还不如直接用scala呢

  11. kshen says:

    我这么写的时候碰到compile错误。 什么原因呢,奇怪…
    Map map = {“key” : 1};

  12. mingshun says:

    越来越多其他语言的影子

  13. 徐风子 says:

    都是些小修小改的语法糖,对java都失望了。

  14. shenfeng says:

    这对java来说是很大的进步了。 要向一个庞大的系统里面加新东西, 挺困难吧。 如果JAVA 有lisp类的macro, 这些就可以自己实现了。

  15. seeeyou says:

    不论是学习其他语言,还是怎么,说明java是在进步的,而且越来越方便了,happy

  16. breakan says:

    好呀。新功能很有用。

  17. 贾珣 says:

    期待。。。期待。。。

  18. cer says:

    java程序员慢慢也退化了。。。。

  19. 老鱼 says:

    不得不说,这些语法我们Python早有了。

  20. tony says:

    貌似很多新特性在其他语言里面早就实现了

  21. 伽达默尔搞IT says:

    都还可以,不过我真的很需要c#的泛型。

  22. 伽达默尔搞IT says:

    c#的泛型什么时候才能加进来啊?

  23. henushang says:

    就第一条,我编译了一下,不行啊

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.