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 ...
 
随机推荐
- SQL--各种约束
			
约束名称 含义 主键约束 定义一个唯一的标识符 外键约束 为了维护和主键表的数据完整性 check约束 限定表中某个列的值的范围 default约束 如果没有指定插入值,则插入默认值 unique约束 ...
 - asp.net-EF事物与存储过程
			
FK_Equipment_EquipmentClass 这个是sql中的命名规范,外键名称在前面,主键名称在后面 EF事务的代码 DbTransaction tran = null; try { ne ...
 - ASP.NET - 单元测试
			
Assert类的使用 Assert.Inconclusive() 表示一个未验证的测试: Assert.AreEqual() 测试指定的值是否相等,如果相等,则测试通过: AreSame() 用于验证 ...
 - UVA 12124 UVAlive 3971 Assemble(二分 + 贪心)
			
先从中找出性能最好的那个数, 在用钱比較少的去组合,能组出来就表明答案在mid的右边,反之在左边, #include<string.h> #include<map> #incl ...
 - 一个简单的推断抢购时间是否到达的js函数
			
原型函数,功能非常easy,找到时钟的id,计算数值.到达抢购时间时运行任务. function nwt() {var str=$('#deal_expiry_timer_e3cdcd2a').tex ...
 - 前端 自定义format函数
			
为字符串创建format方法,用于字符串格式化 {# 前端没有字符串占位符%s的替代方法,以下是自定义字符串替换的方法,以后前端拓展方法都可以使用下面的形式 #} String.prototype. ...
 - c#自己实现线程池功能(二)
			
介绍 在上一篇c#自己实现线程池功能(一)中,我们基本实现了一个能够执行的程序.而不能真正的称作线程池.因为是上篇中的代码有个致命的bug那就是没有任务是并非等待,而是疯狂的进行while循环,并试图 ...
 - IPK僵尸网络 看看其传播手法
			
转自:http://www.freebuf.com/vuls/154975.html 一.IPK僵尸网络概述 IPK僵尸家族是自2012年底就开始出现并长期持续活跃在境外的DDoS僵尸网络.2016年 ...
 - 搭建简单的Habernate环境(一)
			
一.开篇 下载Habernate所需要的jar包和mysql驱动. 二.建立java项目并且导入所需要的包 三.建立实体类和配置映射文件 user实体类 package testPackage; pu ...
 - 关于div中图片水平垂直居中的问题
			
最近在做一个项目,里面涉及到不固定尺寸要在div里面水平垂直居中显示 我没有用table布局,而是用了div+css,找了很久,终于在网上找到解决方案,特此记录备用 关键核心代码如下: <div ...