本文介绍的java 7新特性很多其它的感觉像是语法糖。毕竟java本身已经比較完好了。不完好的非常多比較难实现或者是依赖于某些底层(比如操作系统)的功能。

不过java7也实现了类似aio的强大功能。但本文并未有此介绍。主要是 1.switch能够接受string类型而不像曾经不过int;2.异常catch能够一次处理完而不像曾经一层层的surround;3.泛型类实例化也不用繁琐的将泛型声明再写一遍;4.文件读写 会自己主动关闭流而不像曾经那样须要在finally中显式close。5.数值能够使用下划线分隔。6.文件读写功能增强,有更简单的api调用;7.文件改变的事件通知功能。8.多核
并行计算的支持加强 fork join 框架。9.另一些动态特性的增加。

详细看代码:

1.switch能够接受string类型而不像曾经不过int。

[html] view
plain
copy

  1. public void processTrade(Trade t) {
  2. String status = t.getStatus();
  3. switch (status) {
  4. case NEW:
  5. newTrade(t);
  6. break;
  7. case EXECUTE:
  8. executeTrade(t);
  9. break;
  10. case PENDING:
  11. pendingTrade(t);
  12. break;
  13. default:
  14. break;
  15. }
  16. }

2.异常catch能够一次处理完而不像曾经一层层的surround。

[html] view
plain
copy

  1. public void newMultiCatch() {
  2. try {
  3. methodThatThrowsThreeExceptions();
  4. } catch (ExceptionOne | ExceptionTwo | ExceptionThree e) {
  5. // log and deal with all Exceptions
  6. }
  7. }

3.泛型类实例化也不用繁琐的将泛型声明再写一遍。

[html] view
plain
copy

  1. Map<String, List<Trade>> trades = new TreeMap <> ();

4.文件读写 会自己主动关闭流而不像曾经那样须要在finally中显式close。

[html] view
plain
copy

  1. public void newTry() {
  2. try (FileOutputStream fos = new FileOutputStream("movies.txt");
  3. DataOutputStream dos = new DataOutputStream(fos)) {
  4. dos.writeUTF("Java 7 Block Buster");
  5. } catch (IOException e) {
  6. // log the exception
  7. }
  8. }

5.数值能够使用下划线分隔;

[html] view
plain
copy

  1. int million  =  1_000_000

6.文件读写功能增强,有更简单的api调用;

  1. public void pathInfo() {
  2. Path path = Paths.get("c:\\Temp\\temp");
  3. System.out.println("Number of Nodes:" + path.getNameCount());
  4. System.out.println("File Name:" + path.getFileName());
  5. System.out.println("File Root:" + path.getRoot());
  6. System.out.println("File Parent:" + path.getParent());
  7. //这样写不会抛异常
  8. Files.deleteIfExists(path);
  9. }

7.文件改变的事件通知功能;

[html] view
plain
copy

  1. /**
  2. * This initiates the police
  3. */
  4. private void init() {
  5. path = Paths.get("C:\\Temp\\temp\\");
  6. try {
  7. watchService = FileSystems.getDefault().newWatchService();
  8. path.register(watchService, ENTRY_CREATE, ENTRY_DELETE,
  9. ENTRY_MODIFY);
  10. } catch (IOException e) {
  11. System.out.println("IOException"+ e.getMessage());
  12. }
  13. }
  14. /**
  15. * The police will start making rounds
  16. */
  17. private void doRounds() {
  18. WatchKey key = null;
  19. while(true) {
  20. try {
  21. key = watchService.take();
  22. for (WatchEvent<?> event : key.pollEvents()) {
  23. Kind<?> kind = event.kind();
  24. System.out.println("Event on " + event.context().toString() + " is " + kind);
  25. }
  26. } catch (InterruptedException e) {
  27. System.out.println("InterruptedException: "+e.getMessage());
  28. }
  29. boolean reset = key.reset();
  30. if(!reset)
  31. break;
  32. }
  33. }

8.多核 并行计算的支持加强 fork join 框架。

[html] view
plain
copy

  1. ForkJoinPool pool = new ForkJoinPool(numberOfProcessors);
  2. public class MyBigProblemTask extends RecursiveAction {
  3. @Override
  4. protected void compute() {
  5. . . . // your problem invocation goes here
  6. }
  7. }
  8. pool.invoke(task);

9.另一些动态特性的增加。

java.lang.invoke 包的引入。

MethodHandle, CallSite 另一些其它类供使用。

详细參见原文 http://radar.oreilly.com/2011/09/java7-features.html

很多其它内容。大家可參考:

Java 7 的新特性一览表

Java7的那些新特性的更多相关文章

  1. java7和java8新特性

    以下来至网址: http://blog.csdn.net/samjustin1/article/details/52268004 Java7 新特性 1.switch中可以使用字符串了 String ...

  2. Java 5/Java 6/Java7/Java 8新特性收集

    前言: Java 8对应的JDK版本为JDK8,而官网下载回来安装的时候,文件夹上写的是JDK1.8,同一个意思.(而这个版本命名也是有规律的,以此类推) 一.Java 5 1.https://seg ...

  3. Java7的异常处理新特性-addSuppressed()方法等

    开发人员对异常处理的try-catch-finally语句块都比较熟悉.如果在try语句块中抛出了异常,在控制权转移到调用栈上一层代码之前,finally语句块中的语句也会执行.但是finally语句 ...

  4. Java Java7处理异常新特性

  5. java5、java6、java7、java8的新特性

    Java5: 1.泛型 Generics:        引用泛型之后,允许指定集合里元素的类型,免去了强制类型转换,并且能在编译时刻进行类型检查的好处. Parameterized Type作为参数 ...

  6. java7新特性 java8新特性

    Java 7 的7个新特性 Java7语法新特性 JAVA8 十大新特性详解 http://www.jb51.net/article/48304.htm

  7. Java7 新特性 数值文本表示法

    今天和大家分享下 java7中新特性-数值文本表示法 首先,在原来jdk1.6中 如果需要将一个二进制的数值转换成十进制的话,一般情况下都会以下面的代码方式去实现. public static voi ...

  8. java7 新特性 总结版

    Java7语法新特性: 前言,这是大部分的特性,但还有一些没有写进去,比如多核 并行计算的支持加强 fork join 框架:这方面并没有真正写过和了解.也就不写进来了. 1. switch中增加对S ...

  9. Java7的新特性

    原文出处:xixicat 序 本文主要讲Java7的新特性,相对于Java6而言,Java7增加了一些重要的特性,比如NIO2,不像Java6那么鸡肋,也算是一个重要的版本. 特性列表 suppres ...

随机推荐

  1. F - Truck History

    F - Truck History #include<cstdio> #include<cstring> #include<iostream> #include&l ...

  2. HDU 3709

    真是跪了,一看范围就不会往枚举的方向想,没想到真用枚举加剪枝了...->——-> 解释一下代码中的上限: 例如4567,当枚举最高位时,很明显不能超过4,所以有上限,但当最高位为3以下时, ...

  3. Python游戏server开发日记(二)绕过GIL启动多线程Python环境

    说道Python和多线程,非常easy想到GIL,GIL意味着仅仅要是用Python做的多线程程序.就无法利用多个CPU. 经过一些失败的尝试后,我也一度觉得GIL是无解的.我们甚至把注意力转向了Ir ...

  4. 逆向学习XXclient怎样仅仅执行一个实例

    个人觉得学习分两种, 一种是当面请教和直接从书本网络中的资料学习. 其二就是看着令你惊叹的作品-顿悟. 什么?顿悟不了?那我们就一起来逆向学习吧!差点忘了,我并不打算提供Demo,这并不重要,难道你打 ...

  5. GO语言UDP小笔记

    <pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#0000f ...

  6. jquery源码ajax分析

    http://www.cnblogs.com/aaronjs/p/3683925.html

  7. ubuntu14.04无法安装Curl

    ubuntu14.04无法安装Curl apt-get install curl 提示没有这个软件 源 更换软件源到163也不行,更新软件源也不行. 解决:參考http://www.linuxidc. ...

  8. struts2在action中获取request、session、application,并传递数据

    假设仅仅是通过request.session.application传递数据,则不须要获取对应的对象也能够传递数据,代码例如以下: ScopeAction.java: package com.ithe ...

  9. 7.gcc的使用

    什么是gcc gcc编译器(GNU C Compiler) 现在我们所说的 gcc 是 GUN Compiler Collection的缩写,可以支持多种语言编译,比如 C,C++,Java, pas ...

  10. element-ui自定义table表头,修改列标题样式

    elementUI table表格一般的样式是这样的: 但是要改变表头是比较麻烦的一个事情,但是往往有些项目是需要的比如改成如下样式: 一般直接改起来挺麻烦,好在官网提供了一个方法:render-he ...