Java SE 11(18.9)中的API更新
Java SE 11也被命名為18.9(基于使用發布年份和月份的新命名方案),預計將在9月的最后一周發布GA。 頻繁發布新JDK版本的新方法是允許語言創建者引入新功能,并向開發人員社區更快地進行API更新。
通常,API更新不會引起注意,并且會被一些重大更改所掩蓋。 因此,我想到了枚舉Java 11中可能沒有的Java 10中的一些API更改。
我正在使用從此處下載的jdk-11-ea + 16構建
Character.toString(int)
此方法返回給定Unicode代碼點的字符串表示形式,如下所示:
jshell> Character.toString(100) $10 ==> "d" jshell> Character.toString(66) $7 ==> "B"CharacterSequence.compare(java.lang.CharSequence,java.lang.CharSequence)
這將按字典順序比較兩個字符序列,如果第一個字符序列在字典上小于或等于第二個,則返回負,零或正。
詞典上的意思是字典順序或字母順序。
jshell> CharSequence.compare("girl", "boy") $12 ==> 5jshell> CharSequence.compare("girl", "girl") $13 ==> 0jshell> CharSequence.compare("hello", "world") $14 ==> -15重復(int)
jshell> "**".repeat(5) $15 ==> "**********"jshell> "**".repeat(-7) | Exception java.lang.IllegalArgumentException: count is negative: -7 | at String.repeat (String.java:3147) | at (#16:1)jshell> "**".repeat(0) $17 ==> ""jshell> "**".repeat(1) $18 ==> "**"isBlank()
jshell> String msg = "hello" msg ==> "hello"jshell> msg.isBlank() $22 ==> falsejshell> String msg = "" msg ==> ""jshell> msg.isBlank() $24 ==> truejshell> String msg = " " msg ==> " "jshell> msg.isBlank() $26 ==> truestrip(),stripTrailing(),stripLeading()
jshell> " hello world ".strip() $29 ==> "hello world"jshell> "hello world ".strip() $30 ==> "hello world"jshell> "hello world ".stripTrailing() $31 ==> "hello world"jshell> " hello world ".stripLeading() $32 ==> "hello world "jshell> " ".strip() $33 ==> ""lines()
jshell> String content = "this is a multiline content\nMostly obtained from some file\rwhich we will break into lines\r\nusing the new api" content ==> "this is a multiline content\nMostly obtained fro ... ines\r\nusing the new api"jshell> content.lines() $36 ==> java.util.stream.ReferencePipeline$Head@5ec0a365jshell> content.lines().forEach(System.out::println) this is a multiline content Mostly obtained from some file which we will break into lines using the new apijava.nio.file.Path.of()
在此版本之前,有沒有在工廠方法java.nio.file.Path ,雖然有一個方法java.nio.file.Paths 。 此版本在java.nio.file.Path中引入了一種工廠方法,該方法有兩個變體:
1.將String放置到資源中
2.將URI位置帶到資源 兩者都顯示如下:
Pattern.asMatchPredicate()
此API返回java.util.function.Predicate ,可用于測試給定的字符串是否與使用java.util.regex.Pattern編譯的模式匹配
jshell> Pattern somePattern = Pattern.compile("\\w+@\\w+[.]com") somePattern ==> \w+@\w+[.]comjshell> Predicate<String> somePredicate = somePattern.asMatchPredicate() somePredicate ==> java.util.regex.Pattern$$Lambda$26/0x00000008000d0840@34c4973jshell> somePredicate.test("sana@gmail.net") $55 ==> falsejshell> somePredicate.test("sana@gmail.com") $56 ==> truejshell> somePredicate.test("sana#@gmail.com") $57 ==> false與Java EE相關的API,即Corba,JAXB,JAX WS(Web服務)已被刪除。 直到Java 10從孵化器移到其自己的模塊java.net.http之前,孵化器中一直使用的HTTP客戶端庫。 我很快會在新的HTTP客戶端上寫一些帖子。
翻譯自: https://www.javacodegeeks.com/2018/06/api-updates-java.html
總結
以上是生活随笔為你收集整理的Java SE 11(18.9)中的API更新的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 尼康拍夜景参数设置(尼康单反夜景参数)
- 下一篇: java方法传对象参数_Java方法中的