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. publicvoidprocessTrade(Tradet){
  2. Stringstatus=t.getStatus();
  3. switch(status){
  4. caseNEW:
  5. newTrade(t);
  6. break;
  7. caseEXECUTE:
  8. executeTrade(t);
  9. break;
  10. casePENDING:
  11. pendingTrade(t);
  12. break;
  13. default:
  14. break;
  15. }
  16. }
2.异常catch可以一次处理完而不像以前一层层的surround;

[html] view plain copy
  1. publicvoidnewMultiCatch(){
  2. try{
  3. methodThatThrowsThreeExceptions();
  4. }catch(ExceptionOne|ExceptionTwo|ExceptionThreee){
  5. //loganddealwithallExceptions
  6. }
  7. }


3.泛型类实例化也不用繁琐的将泛型声明再写一遍;

[html] view plain copy
  1. Map<String,List<Trade>>trades=newTreeMap<>();

4.文件读写 会自动关闭流而不像以前那样需要在finally中显式close;

[html] view plain copy
  1. publicvoidnewTry(){
  2. try(FileOutputStreamfos=newFileOutputStream("movies.txt");
  3. DataOutputStreamdos=newDataOutputStream(fos)){
  4. dos.writeUTF("Java7BlockBuster");
  5. }catch(IOExceptione){
  6. //logtheexception
  7. }
  8. }


5.数值可以使用下划线分隔;

[html] view plain copy
  1. intmillion=1_000_000

6.文件读写功能增强,有更简单的api调用;

 
[html] view plain copy
  1. publicvoidpathInfo(){
  2. Pathpath=Paths.get("c:\\Temp\\temp");
  3. System.out.println("NumberofNodes:"+path.getNameCount());
  4. System.out.println("FileName:"+path.getFileName());
  5. System.out.println("FileRoot:"+path.getRoot());
  6. System.out.println("FileParent:"+path.getParent());
  7. //这样写不会抛异常
  8. Files.deleteIfExists(path);
  9. }

7.文件改变的事件通知功能;

[html] view plain copy
  1. /**
  2. *Thisinitiatesthepolice
  3. */
  4. privatevoidinit(){
  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(IOExceptione){
  11. System.out.println("IOException"+e.getMessage());
  12. }
  13. }
  14. /**
  15. *Thepolicewillstartmakingrounds
  16. */
  17. privatevoiddoRounds(){
  18. WatchKeykey=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("Eventon"+event.context().toString()+"is"+kind);
  25. }
  26. }catch(InterruptedExceptione){
  27. System.out.println("InterruptedException:"+e.getMessage());
  28. }
  29. booleanreset=key.reset();
  30. if(!reset)
  31. break;
  32. }
  33. }


8.多核 并行计算的支持加强 fork join 框架;

[html] view plain copy
  1. ForkJoinPoolpool=newForkJoinPool(numberOfProcessors);
  2. publicclassMyBigProblemTaskextendsRecursiveAction{
  3. @Override
  4. protectedvoidcompute(){
  5. ...//yourprobleminvocationgoeshere
  6. }
  7. }
  8. pool.invoke(task);


9.还有一些动态特性的加入。

java.lang.invoke包的引入。MethodHandle,CallSite还有一些其他类供使用。


具体参见原文 http://radar.oreilly.com/2011/09/java7-features.html

更多内容,大家可参考:

Java 7 的新特性一览表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值