Java 11中的11個隱藏的寶石
Java 11沒有引入突破性的功能,但包含了許多你可能還沒有聽說過的寶石:
1. Lambda引數的型別推斷
List<EnterpriseGradeType<With, Generics>> types = /*...*/; types.stream() // this is fine, but we need @Nonnull on the type .filter(type -> check(type)) // in Java 10, we need to do this ~> ugh! .filter((@Nonnull EnterpriseGradeType<With, Generics> type) -> check(type)) // in Java 11, we can do this ~> better .filter((@Nonnull var type) -> check(type)) 2. |
有多行字串?想要對每一行做點什麼嗎?
var multiline = "This\r\nis a\r\nmultiline\r\nstring"; multiline.lines() // we now have a `Stream<String>` .map(line -> "// " + line) .forEach(System.out::println); // OUTPUT: // This // is a // multiline // string 3. |
4. 用'String :: repeat'重複字串
5. 使用'Path :: of'建立路徑
Path tmp = Path.of("/home/nipa", "tmp"); Path codefx = Path.of(URI.create("http://codefx.org")); |
6. 使用'Files :: readString'和'Files :: writeString'讀取和寫入檔案
String haiku = Files.readString(Path.of("haiku.txt")); String modified = modify(haiku); Files.writeString(Path.of("haiku-mod.txt"), modified); |
7. 空讀I / O使用'Reader :: nullReader
需要一個丟棄輸入位元組的 OutputStream嗎?需要一個空的 InputStream?使用Reader和Writer但是什麼也不做?Java 11讓你滿意:
InputStream input = InputStream.nullInputStream(); OutputStream output = OutputStream.nullOutputStream(); Reader reader = Reader.nullReader(); Writer writer = Writer.nullWriter(); |
8. 集合變成一個陣列:Collection :: toArray
String[] strings_fun = list.toArray(String[]::new); |
9. 使用Optional :: isEmpty表達不存在概念
public boolean needsToCompleteAddress(User user) { return getAddressRepository() .findAddressFor(user) .map(this::canonicalize) .filter(Address::isComplete) .isEmpty(); } |
10. 使用謂詞::not 表達 “不”
Stream.of("a", "b", "", "c") // statically import `Predicate.not` .filter(not(String::isBlank)) .forEach(System.out::println); |
11. 使用'Pattern :: asMatchPredicate'作為謂詞的正規表示式
Pattern nonWordCharacter = Pattern.compile("\\W"); Stream.of("Metallica", "Motörhead") .filter(nonWordCharacter. |
()) .forEach(System.out::println); |
asMatchPredicate是要求整個字串匹配,而asPredicate 只需要字串中出現過或有匹配的一段子串即可,要求不高。
相關文章
- 隱藏IP地址的四個作用
- 像寶石一樣的Java原子類Java
- go 中 defer 的一個隱藏功能Go
- 深入挖掘 MacOS 的8個隱藏技巧Mac
- 二分查詢 : 那個隱藏了 10 年的 Java BugJava
- 隱藏資料夾怎麼取消隱藏 關閉隱藏檔案的辦法
- Java 15 新特性:隱藏類Java
- 榮耀9隱藏的3個功能 你知道幾個?
- OSX中隱藏和顯示[隱藏檔案]的命令列命令列
- 隱藏你的 ID 吧!
- 滑鼠打字的背後,隱藏著一個感人的故事
- jQuery隱藏一個div元素jQuery
- 被人遺忘的寶藏
- iframe隱藏頭部的toolbar
- .NET 5 中的隱藏特性
- 10個寶藏級的微服務管理開源工具微服務開源工具
- 寶藏
- 對 *nix WEB伺服器的一個隱藏威脅Web伺服器
- 發現ThinkPHP裡面隱藏了幾個有用的方法PHP
- 收藏 | 關於Mac Dock的10 個隱藏終端命令Mac
- 你可能不知道的 10 個 Laravel Eloquent 的隱藏特性Laravel
- 隱藏的資料夾怎麼找出來 恢復隱藏資料夾的辦法
- 隱藏索引索引
- 導航欄的隱藏問題
- 聊聊React中的隱藏彩蛋功能React
- Mac檢視隱藏的檔案Mac
- 區塊的顯示和隱藏
- 隱藏IP地址的三種方法
- jQuery幾種隱藏span的方法jQuery
- macOS 訪達的隱藏小技巧Mac
- 推薦五款寶藏軟體,身為寶藏男孩和寶藏女孩的你,不試一下嗎?
- Mac顯示和隱藏“隱藏檔案”命令Mac
- win10如何隱藏一個硬碟 window10怎麼隱藏硬碟分割槽Win10硬碟
- 在java和Scenebuilder隱藏核取方塊JavaUI
- 如何訪問Windows 10隱藏的一個控制皮膚功能Windows
- Android Pie的9個隱藏功能:你可能錯過的若干最佳技巧Android
- 有趣的css—隱藏元素的7種思路CSS
- 夯實Java基礎系列2:Java自動拆裝箱裡隱藏的秘密Java