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。
- public void processTrade(Trade t) {
- String status = t.getStatus();
- switch (status) {
- case NEW:
- newTrade(t);
- break;
- case EXECUTE:
- executeTrade(t);
- break;
- case PENDING:
- pendingTrade(t);
- break;
- default:
- break;
- }
- }
2.异常catch能够一次处理完而不像曾经一层层的surround。
- public void newMultiCatch() {
- try {
- methodThatThrowsThreeExceptions();
- } catch (ExceptionOne | ExceptionTwo | ExceptionThree e) {
- // log and deal with all Exceptions
- }
- }
3.泛型类实例化也不用繁琐的将泛型声明再写一遍。
- Map<String, List<Trade>> trades = new TreeMap <> ();
4.文件读写 会自己主动关闭流而不像曾经那样须要在finally中显式close。
- public void newTry() {
- try (FileOutputStream fos = new FileOutputStream("movies.txt");
- DataOutputStream dos = new DataOutputStream(fos)) {
- dos.writeUTF("Java 7 Block Buster");
- } catch (IOException e) {
- // log the exception
- }
- }
5.数值能够使用下划线分隔;
- int million = 1_000_000
6.文件读写功能增强,有更简单的api调用;
[html] view plaincopy
- public void pathInfo() {
- Path path = Paths.get("c:\\Temp\\temp");
- System.out.println("Number of Nodes:" + path.getNameCount());
- System.out.println("File Name:" + path.getFileName());
- System.out.println("File Root:" + path.getRoot());
- System.out.println("File Parent:" + path.getParent());
- //这样写不会抛异常
- Files.deleteIfExists(path);
- }
7.文件改变的事件通知功能;
- /**
- * This initiates the police
- */
- private void init() {
- path = Paths.get("C:\\Temp\\temp\\");
- try {
- watchService = FileSystems.getDefault().newWatchService();
- path.register(watchService, ENTRY_CREATE, ENTRY_DELETE,
- ENTRY_MODIFY);
- } catch (IOException e) {
- System.out.println("IOException"+ e.getMessage());
- }
- }
- /**
- * The police will start making rounds
- */
- private void doRounds() {
- WatchKey key = null;
- while(true) {
- try {
- key = watchService.take();
- for (WatchEvent<?> event : key.pollEvents()) {
- Kind<?> kind = event.kind();
- System.out.println("Event on " + event.context().toString() + " is " + kind);
- }
- } catch (InterruptedException e) {
- System.out.println("InterruptedException: "+e.getMessage());
- }
- boolean reset = key.reset();
- if(!reset)
- break;
- }
- }
8.多核 并行计算的支持加强 fork join 框架。
- ForkJoinPool pool = new ForkJoinPool(numberOfProcessors);
- public class MyBigProblemTask extends RecursiveAction {
- @Override
- protected void compute() {
- . . . // your problem invocation goes here
- }
- }
- pool.invoke(task);
9.另一些动态特性的增加。
java.lang.invoke 包的引入。
MethodHandle, CallSite 另一些其它类供使用。
详细參见原文 http://radar.oreilly.com/2011/09/java7-features.html
很多其它内容。大家可參考:
Java 7 的新特性一览表
Java7的那些新特性的更多相关文章
- java7和java8新特性
以下来至网址: http://blog.csdn.net/samjustin1/article/details/52268004 Java7 新特性 1.switch中可以使用字符串了 String ...
- Java 5/Java 6/Java7/Java 8新特性收集
前言: Java 8对应的JDK版本为JDK8,而官网下载回来安装的时候,文件夹上写的是JDK1.8,同一个意思.(而这个版本命名也是有规律的,以此类推) 一.Java 5 1.https://seg ...
- Java7的异常处理新特性-addSuppressed()方法等
开发人员对异常处理的try-catch-finally语句块都比较熟悉.如果在try语句块中抛出了异常,在控制权转移到调用栈上一层代码之前,finally语句块中的语句也会执行.但是finally语句 ...
- Java Java7处理异常新特性
- java5、java6、java7、java8的新特性
Java5: 1.泛型 Generics: 引用泛型之后,允许指定集合里元素的类型,免去了强制类型转换,并且能在编译时刻进行类型检查的好处. Parameterized Type作为参数 ...
- java7新特性 java8新特性
Java 7 的7个新特性 Java7语法新特性 JAVA8 十大新特性详解 http://www.jb51.net/article/48304.htm
- Java7 新特性 数值文本表示法
今天和大家分享下 java7中新特性-数值文本表示法 首先,在原来jdk1.6中 如果需要将一个二进制的数值转换成十进制的话,一般情况下都会以下面的代码方式去实现. public static voi ...
- java7 新特性 总结版
Java7语法新特性: 前言,这是大部分的特性,但还有一些没有写进去,比如多核 并行计算的支持加强 fork join 框架:这方面并没有真正写过和了解.也就不写进来了. 1. switch中增加对S ...
- Java7的新特性
原文出处:xixicat 序 本文主要讲Java7的新特性,相对于Java6而言,Java7增加了一些重要的特性,比如NIO2,不像Java6那么鸡肋,也算是一个重要的版本. 特性列表 suppres ...
随机推荐
- 使用postman 测试restful接口
前提: 在chrome网上应用商店安装postman 和 Postman Interceptor. 如下图: 使用postman的时候,最后开启postman Interceptor,如下图: 然后启 ...
- [Tailwind] Get started with Tailwindcss
In this lesson, we learn how to generate CSS utility classes from Tailwind's JavaScript config file. ...
- Python学习笔记-小记
1.字符串string 推断一个字符(char)是数字还是字母 str.isalpha() #推断是否为字母 str.isdigit() #推断是否为数字 推断一个字符串是否为空 if not str ...
- UVA 4683 - Find The Number
uva 4683 这题的意思是给一个集合,最多有12个元素. 找出仅仅能被集合中一个仅且一个数整除的第n个数. (n <= 10^15). 我用容斥原理做的.先把能被每一个数整除的元素个数累加, ...
- 微软ASP.NET网站部署指南(3):使用Web.Config文件的Transformations
1. 综述 大多数程序里都会在Web.config里设置參数,而且在部署的时候须要更改. 每次都手工更改这些配置非常乏味,也easy出错. 该章节将会告诉你假设通过自己主动化更新Web.config文 ...
- PHPStorm中使用bootstrap3控件!
PHPStorm中使用bootstrap3控件! 奇怪为什么不自动提示呢? 原来需要Ctrl+j才显示出来! 很方便的控件!!!!
- 英语发音规则---F字母
英语发音规则---F字母 一.总结 一句话总结: 1.F/FF发[f]音? fly [flaɪ] vi. 飞 fine [faɪn] adj. 好的 float [fləʊt] vt. 使漂浮 fra ...
- dnscapy使用——本质上是建立ssh的代理(通过dns tunnel)
git clone https://github.com/cr0hn/dnscapy.git easy_install Scapy 服务端: python dnscapy_server.py a.fr ...
- Ubuntu14.04下Mongodb数据库可视化工具安装部署步骤(图文详解)(博主推荐)
不多说,直接上干货! 前期博客 Ubuntu14.04下Mongodb(离线安装方式|非apt-get)安装部署步骤(图文详解)(博主推荐) Ubuntu14.04下Mongodb官网安装部署步骤(图 ...
- ZBrush中如何做不同图案的遮罩
ZBrush®软件中不仅可以创建矩形遮罩还可以创建有图案的遮罩,且是非常简单有效的,那么究竟怎样做出神奇的效果,本文将为您详细讲解. 有关反转遮罩.清除遮罩的详细内容,请点击:ZBrush中如何反选遮 ...