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 只需要字串中出現過或有匹配的一段子串即可,要求不高。
相關文章
- 隱藏的寶藏,13個不可忽視的優秀 Python 庫Python
- go 中 defer 的一個隱藏功能Go
- Oracle11g版本中未歸檔隱藏引數Oracle
- 像寶石一樣的Java原子類Java
- 探索 Java 隱藏的開銷Java
- .NET 5 中的隱藏特性
- OSX中隱藏和顯示[隱藏檔案]的命令列命令列
- Eclipse 中隱藏的 5 個非常有用的功能Eclipse
- c++中的隱藏及過載、重寫與隱藏的區別C++
- 隱藏IP地址的四個作用
- 聊聊React中的隱藏彩蛋功能React
- Windows XP中隱藏的幾個安全小工具(轉)Windows
- 影像隱寫之使用PHP隱藏影像中的文字PHP
- 深入挖掘 MacOS 的8個隱藏技巧Mac
- web測試的幾個隱藏點Web
- MySQL 8.0 中的索引可以隱藏了!MySql索引
- 隱藏域在Ajax中的應用
- 隱藏JqueryMobile中的Header與FooterjQueryHeader
- C++中的覆蓋和隱藏C++
- 網頁中隱藏幀的妙用 (轉)網頁
- MAC如何顯示隱藏檔案和隱藏隱藏檔案的命令Mac
- java 部分隱藏欄位Java
- 二分查詢 : 那個隱藏了 10 年的 Java BugJava
- 來自11家OEM廠商的智慧手機容易遭到隱藏AT指令攻擊
- 11.2 煉石模擬賽
- 隱藏資料夾怎麼取消隱藏 關閉隱藏檔案的辦法
- 為什麼說for...of是JS中的一顆寶石JS
- 在你的 Flutter 專案中隱藏敏感資訊Flutter
- Python標準庫中隱藏的利器Python
- 你可能不知道的10個CSS3中的隱藏特性CSSS3
- Java身份證號碼的打碼隱藏(加*)Java
- Windows系統中的寶藏之程式篇(轉)Windows
- Java 15 新特性:隱藏類Java
- 寶藏
- Mac下顯示和隱藏隱藏檔案的命令Mac
- 在Java 11中建立一個簡單的模組化應用教程Java
- Java 效能調優的 11 個實用技巧Java
- 11 個簡單的 Java 效能調優技巧Java