日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java Language Changes for Java SE 9

發布時間:2023/12/13 java 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java Language Changes for Java SE 9 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java9引入了module模塊的概念,是類與接口和數據資源的一種封裝,并可以聲明與其他模塊的依賴關系。這里總結一下Java9帶來的新特性。

更簡練的try-with-resources語句

final Resource resource1 = new Resource("resource1");//a final resource Resource resource2 = new Resource("resource2");//An effectively final resource try(resource1;resource2){}//in Java7&8: try(Resource r1=resource1;Resources r2=resource2){} //@SafeVarargs可用于static、final、private方法,Iterator<String> i=new Iterator<>(){}鉆石符號可用于匿名類,下劃線不能再用于變量名集合工廠方法增強 List.of(E e1, E e2, E e3); //有多個重載方法,老版本:Arrays.asList(“a”,”b”);Stream.of(“a”,”b”).collect(toList()) Set.of(E … elements); //of工廠方法創建的都是unmodifiable不可更改的集合,可使用new ArrayList(unmodifiable)再次包裝 Map.of(K k1, V v1, K k2, V v2); //ofEntries(Map.Entry<K,V> … entries),Map.entry(“K”,”V”)可以提供entryies參數 //內部實現使用了wrapper對象,原始集合還是可以更改但不建議,unmodifiable集合可用于并行計算,避免很多場合下的集合復制,多個重載方法是為更好性能進程ProcessHandle增強 Process p=new ProcessBuilder(“notepad.exe”).start();//老版本:Runtime.getRuntime().exec(String),Process.waitFor()進程退出后才會執行后續代碼 ProcessHandle ph = Process.toHandle(); //long getPid()等方法直接代理給了ProcessHandle.getPid(),當前進程ProcessHandle.current() Info i=ProcessHandle.info(); //Info包含了進程命令信息,Optional<String[]> args=Info.arguments(); 命令:Info.command().orElse(“”) //onExit().thenAccept(ph –> System.out.println(“PID %d terminated%n”, ph.getPid())); 使用lamda響應進程退出信息,onExit().get()等待進程多版本三方包Multi-Release Jar META-INFO/MANIFEST.MF,包含條目 Multi-Release: true META-INFO/releases/9/A.class,在JDK9時可替代/A.class,JDK10則對應10目錄 //例如獲取pid的不同方法,可提供多JDK支持的jar包,JarFile.isMultiRelease() //JDK8及以前:jvmName = ManagementFactory.getRuntimeMXBean().getName(); index = jvmName.indexOf('@'); pid=index<1?0:jvmName.substring(0, index); //JDK9及以后:ProcessHandle.current().getPid(); jar cfe pid.jar PrintPID -C v1 PrintPID.class -C v1 Util.class --release 9 -C v2 Util.class //java –jar pid.jar,支持JDK8和JDK9調用棧訪問StackWalker StackTraceElement[] stackTrace = new Throwable().getStackTrace(); //老的方式比較耗性能 StackWalker sw2 = StackWalker.getInstance(); //options可選RETAIN_CLASS_REFERENCE、SHOW_HIDDEN_FRAMES sw.forEach(System.out::println); //Consumer<? super StackWalker.StackFrame> action,StackFrame支持fileName、methodName、lineNumber等信息 long numFrames = sw.walk(frames_ -> frames_.count()); //forEach()等價于walk(s -> { s.forEach(action); return null; });發布訂閱框架 SubmissionPublisher<String> publisher = new SubmissionPublisher<>(); MySubscriber<String> subscriber = new MySubscriber<>(); //class MySubscriber<T> implements Subscriber<T>{void onSubscribe(Subscription subscription)} publisher.subscribe(subscriber); publisher.submit(“A”); publisher.close();


轉載于:https://www.cnblogs.com/xingqi/p/9959688.html

總結

以上是生活随笔為你收集整理的Java Language Changes for Java SE 9的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。