本文介绍的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 包的引入。

MethodHandleCallSite 另一些其它类供使用。

详细參见原文 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. nodejs-Sream

    Stream 是一个抽象接口,Node 中有很多对象实现了这个接口.例如,对http 服务器发起请求的request 对象就是一个 Stream,还有stdout(标准输出). Node.js,Str ...

  2. .NET平台开源JSON库LitJSON的使用方法

    下载地址:LitJson.dll下载 一个简单示例: String str = "{'name':'cyf','id':10,'items':[{'itemid':1001,'itemnam ...

  3. [Preference] How to avoid Forced Synchronous Layout or FSL to improve site preference

    When tigger site updates the layout, it always follow this order: Javascript trigger style changes, ...

  4. disruptor实操作手冊(二)

    多消费者场景 上一篇文章介绍了怎样构建一个简单的disruptorproject之后.应该有相当一部分客官骂娘了,确实这种范例在其他地方多的是. 从这篇開始,介绍一些不一样的东西. 一,多个消费者: ...

  5. How to improve Java&#39;s I/O performance( 提升 java i/o 性能)

    原文:http://www.javaworld.com/article/2077523/build-ci-sdlc/java-tip-26--how-to-improve-java-s-i-o-per ...

  6. jQuery插件 -- Cookie插件

    Cookie是站点设计者放置在client的小文本文件.Cookie能为用户提供非常多的使得,比如购物站点存储用户以前浏览过的产品列表.或者门户站点记住用户喜欢选择浏览哪类新闻. 在用户同意的情况下. ...

  7. wpf Shake

    <Setter Property="RenderTransformOrigin" Value="0.5 0.5" /> <Setter Pro ...

  8. hdu2476String painter (区间DP)

    Problem Description There are two strings A and B with equal length. Both strings are made up of low ...

  9. Migrations有两个文件迁移数据的方法

    不分开迁移报错如下; 解决方案 1 迁移Migration/nfoManage EntityFramework\Enable-Migrations -ContextTypeName InfoModel ...

  10. jQuery插件开发的两种方法

    1 类级别 类级别你可以理解为拓展jquery类,最明显的例子是$.ajax(...),相当于静态方法. 开发扩展其方法时使用$.extend方法,即jQuery.extend(object); $. ...