Java7的那些新特性

本文介绍的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调用;


[html] view plaincopy
  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 的新特性一览表

时间: 2024-10-12 13:37:05

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

java7和java8新特性

以下来至网址: http://blog.csdn.net/samjustin1/article/details/52268004 Java7 新特性 1.switch中可以使用字符串了 String s = "test"; switch (s) { case "test" : System.out.println("test"); case "test1" : System.out.println("test1&qu

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

前言: Java 8对应的JDK版本为JDK8,而官网下载回来安装的时候,文件夹上写的是JDK1.8,同一个意思.(而这个版本命名也是有规律的,以此类推) 一.Java 5 1.https://segmentfault.com/a/1190000004417288 二.Java 6 2.https://segmentfault.com/a/1190000004417536 三.Java 7 1.http://www.eclipse.org/jdt/ui/r3_8/Java7news/whats-

Java 5/Java 6/Java7/Java 8新特性收集(转载)

Java 8对应的JDK版本为JDK8,而官网下载回来安装的时候,文件夹上写的是JDK1.8,同一个意思.(而这个版本命名也是有规律的,以此类推) 一.Java 5 1.https://segmentfault.com/a/1190000004417288 二.Java 6 2.https://segmentfault.com/a/1190000004417536 三.Java 7 1.http://www.eclipse.org/jdt/ui/r3_8/Java7news/whats-new-

java7 实用的新特性:编程技巧

出处:http://it.deepinmind.com/java/2014/04/21/10-jdk-7-features-to-revisit-before-you-welcome-java-8.html 回顾下Java 7有哪些新特性,如果你还记得的话,Java 6是没有增加任何特性的,只是JVM的一些改动以及性能的提升,不过JDK 7倒是增加了不少有助于提升开发效率的很给力的特性.我现在写这篇文章的目的是什么呢?为什么别人都在讨论Java 8的时候,我却还在聊Java1.7的事?因为我认为

Java Java7处理异常新特性

java5、java6、java7、java8的新特性

Java5: 1.泛型 Generics:        引用泛型之后,允许指定集合里元素的类型,免去了强制类型转换,并且能在编译时刻进行类型检查的好处. Parameterized Type作为参数和返回值,Generic是vararg.annotation.enumeration.collection的基石. A.类型安全 抛弃List.Map,使用List<T>.Map<K,V>给它们添加元素或者使用Iterator<T>遍历时,编译期就可以给你检查出类型错误 B

java7新特性之Try-with-resources (TWR)

java7新特性之Try-with-resources (TWR) This change is easy to explain, but it has proved to have hidden subtleties, which made it much less easy to implement than originally hoped. The basic idea is to allow a resource (for example, a file or something a

Java5、Java6、Java7的新特性

Java5.Java6.Java7的新特性 摘自http://blog.csdn.net/heardy/article/details/8184430 Java5:1.泛型 Generics:引用泛型之后,允许指定集合里元素的类型,免去了强制类型转换,并且能在编译时刻进行类型检查的好处.Parameterized Type作为参数和返回值,Generic是vararg.annotation.enumeration.collection的基石. A.类型安全 抛弃List.Map,使用List<T

java7新特性之Diamond syntax

java7新特性之Diamond syntax Java 7 also introduces a change that means less typing for you when dealing with generics. One of the problems with generics is that the definitions and setup of instances can be really verbose. Let's suppose that you have som