本文介绍的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. [React] Reference a node using createRef() in React 16.3

    In this lesson, we look at where we came from with refs in React. Starting with the deprecated strin ...

  2. iOS 打印出视图中全部的子视图的名称

    使用递归: - (void)listSubviewsOfView:(UIView *)view { // Get the subviews of the view NSArray *subviews ...

  3. java之 ------ 设计思想

    java的设计思想 (设计思想.是须要不断领悟的.. . ) 一.封装 学java的人都知道这是向对象的编程语言,从字面上理解,就是针对对象的一些操作,将具有某一特性的实体封装成一个类或者是将具有一定 ...

  4. 0x29 总结与练习

    搜索真的菜..困扰了很久,上个星期天没休息好导致整个礼拜没有精神.. 大概完成得七七八八了吧.真是深切的体会到暴力出奇迹的疯狂啊. 3.虫食算 从末位开始枚举判断,通过加数可以推出和的字母代表的数.那 ...

  5. oracle 11gR2 如何修改vip

    因为业务需要,需要将p570a主机和p570b主机上的vip做修改 修改前ip 192.168.128.12   p570a-vip 192.168.128.13   p570b-vip 修改后ip ...

  6. Spark基本运行流程

    不多说,直接上干货! Spark基本运行流程 Application program的组成 Job : 包含多个Task 组成的并行计算,跟Spark action对应. Stage : Job 的调 ...

  7. 比较两个时间的大小 举例:CompareDate("12:00","11:15")

    //比较两个时间的大小 举例:CompareDate("12:00","11:15") function CompareDate(t1, t2) { var d ...

  8. C#——单元测试

    测试搭建请看:http://www.cnblogs.com/Look_Sun/p/4514732.html 右键不出现Generate Unit Test选项请参考:http://www.jb51.n ...

  9. zeromq-4.1.2在windows下的编译

    作者:朱金灿 来源:http://blog.csdn.net/clever101 zeromq是一个最近比较火的跨平台消息中间件,最近准备研究它,故下载它的源码编译了一下.我是使用VS2008编译的, ...

  10. CentOS 5/6 下添加epel源

    如果既想获得 RHEL 的高质量.高性能.高可靠性,又需要方便易用(关键是免费)的软件包更新功能,那么 Fedora Project 推出的 EPEL(Extra Packages for Enter ...