Java JDK11中的新API

有關API更改的完整列表,可在Github上得到。html

這裏列出的是除了java.net.http和jdk.jfr模塊以外的全部新方法。沒有列出java.security模塊中的新方法和類,它們特定於JEP 324和JEP 329的更改(有六個新類和八個新方法)。java

java.io.ByteArrayOutputStreamgit

void writeBytes(byte[]): 將參數的全部字節寫入輸出流github

java.io.FileReadershell

兩個容許指定Charset的新構造函數。api

java.io.FileWriter數組

四個容許指定Charset的新構造函數。函數

java.io.InputStream測試

io.InputStream nullInputStream(): 返回不讀取任何字節的InputStream。當你第一次看到這個方法(以及OutputStream,Reader和Writer中的方法)時,你會想知道它們有什麼用處。您能夠將它們視爲/dev/null,以丟棄您不須要的輸出或提供始終返回零字節的輸入。ui

java.io.OutputStream

io.OutputStream nullOutputStream()

java.io.Reader

io.Reader nullReader()

java.io.Writer

io.Writer nullWriter()

java.lang.Character

String toString(int): 這是現有方法的重載形式,可是使用int而不是char。int是Unicode代碼點。

java.lang.CharSequence

int compare(CharSequence, CharSequence): 按字典順序比較兩個CharSequence實例。若是第一個序列按字典順序小於,等於或大於第二個序列,則返回負值,零或正值。

java.lang.ref.Reference

lang.Object clone(): Reference類不實現Cloneable接口,而且此方法將始終拋出CloneNotSupportedException。必須有一個理由將其包含在內,大概是爲了未來的某些東西。

java.lang.Runtime java.lang.System

這裏沒有新方法,但值得一提的是,如今已從這兩個類中刪除了runFinalizersOnExit()方法(這多是兼容性問題)

java.lang.String

我認爲這是JDK 11中新API的亮點之一。這裏有幾個有用的新方法。

  • boolean isBlank(): 若是字符串爲空或僅包含空格代碼點,則返回true,不然返回false。
  • Stream lines(): 返回今後字符串中提取的行的流,由行終止符分隔。
  • String repeat(int): 返回一個字符串,其值是此字符串重複計數次數的串聯。
  • String strip(): 返回一個字符串,其值爲此字符串,刪除了全部前導和尾隨空格。
  • String stripLeading(): 返回一個字符串,其值爲此字符串,並刪除全部前導空格。
  • String stripTrainling(): 返回一個字符串,其值爲此字符串,並刪除全部尾隨空格。

您可能會看看strip()並詢問這與現有的trim()方法有何不一樣?答案是如何定義空白在二者之間有所不一樣。

java.lang.StringBuffer java.lang.StringBuilder

這兩個類都有一個新的compareTo()方法,它接受一個StringBuffer/StringBuilder 並返回一個int。比較方法與CharSequence的新compareTo()方法相同。

java.lang.Thread

沒有其餘方法,但已刪除destroy()和stop(Throwable) 方法。不帶參數的stop()方法仍然存在。這可能會出現兼容性問題。

java.nio.ByteBuffer java.nio.CharBuffer java.nio.DoubleBuffer java.nio.FloatBuffer java.nio.LongBuffer java.nio.ShortBuffer

全部這些類如今都有一個mismatch()方法,它找到並返回此緩衝區與給定緩衝區之間第一個不匹配的相對索引。

java.nio.channels.SelectionKey

  • int interestOpsAnd(int):以原子方式將此鍵的興趣集設置爲現有興趣集和給定值的按位交集(和)
  • int interestOpsOr(int):以原子方式將此鍵的興趣集設置爲現有興趣集和給定值的按位聯合(或)。

java.nio.channels.Selector

  • int select(java.util.function.Consumer, long): 對相應通道進行I/O操做的鍵選擇並執行操做。long參數是超時時間。
  • int select(java.util.function.Consumer):如上所述,除了沒有超時時間。
  • int selectNow(java.util.function.Consumer):如上所述,除非它是非阻塞的。

java.nio.file.Files

  • String readString(Path):將文件中的全部內容讀入字符串,使用UTF-8字符集從字節到字符進行解碼。
  • String readString(Path, Charset):如上所述,使用指定的Charset從字節到字符的解碼。
  • Path writeString(Path, CharSequence, java.nio.file. OpenOption[]):將CharSequence寫入文件。使用UTF-8字符集將字符編碼爲字節。
  • Path writeString(Path, CharSequence, java.nio.file. Charset, OpenOption[]): 如上所述,使用指定的Charset將字符編碼爲字節。

java.nio.file.Path

  • Path of(String, String[]): 經過轉換路徑字符串或鏈接時造成路徑字符串的字符串序列來返回Path。
  • Path of(net.URI): 經過轉換URI返回路徑。

java.util.Collection

Object[] toArray(java.util.function.IntFunction): 使用提供的生成器函數返回包含此集合中全部元素的數組,以分配返回的數組。

java.util.concurrent.PriorityBlockingQueue java.util.PriorityQueue

  • void forEach(java.util.function.Consumer):對Iterable的每一個元素執行給定的操做,直處處理完全部元素或操做拋出異常爲止。
  • boolean removeAll(java.util.Collection):刪除此集合的全部元素,這些元素也包含在指定的集合中(可選操做)。
  • boolean removeIf(java.util.function.Predicate):刪除此集合中知足給定謂詞的全部元素。
  • boolean retainAll(java.util.Collection):僅保留此集合中包含在指定集合中的元素(可選操做)。

java.util.concurrent.TimeUnit

long convert(java.time.Duration):將給定的持續時間轉換爲此單位。

java.util.function.Predicate

返回一個Predicate,Predicate是對所提供Predicate的否認。:

lines.stream()   
         .filter(s -> !s.isBlank())
複製代碼

同等於

lines.stream()
         .filter(Predicate.not(String::isBlank))
複製代碼

若是咱們使用靜態導入,它將變爲:

lines.stream()
          .filter(not(String::isBlank))
複製代碼

就我的而言,我認爲這個版本更易讀,更容易理解。

java.util.Optional java.util.OptionalInt java.util.OptionalDouble java.util.OptionalLong

boolean isEmpty():若是某個值不存在,則返回true,不然返回false。

java.util.regex.Pattern

Predicate asMatchPredicate():我認爲這多是新JDK 11 API中隱藏的內容。建立一個Predicate,測試此模式是否與給定的輸入字符串匹配。

java.util.zip.Deflater

  • int deflate(ByteBuffer):壓縮輸入數據並用壓縮數據填充指定的緩衝區。
  • int deflate(ByteBuffer, int):壓縮輸入數據並用壓縮數據填充指定的緩衝區。返回壓縮的實際數據字節數。
  • void setDictionary(ByteBuffer):將壓縮的預設字典設置爲給定緩衝區中的字節。這是現有方法的重載形式,如今能夠接受ByteBuffer而不是字節數組。
  • void setInput(ByteBuffer):設置壓縮的輸入數據。也是現有方法的重載形式。

java.util.zip.Inflater

  • int inflate(ByteBuffer):將字節解壓縮到指定的緩衝區中。返回未壓縮的實際字節數。
  • void setDictionary(ByteBuffer):將預設字典設置爲給定緩衝區中的字節。現有方法的重載形式。
  • void setInput(ByteBuffer):設置解壓縮的輸入數據。現有方法的重載形式。

javax.print.attribute.standard.DialogOwner

這是JDK 11中的一個新類,它是一個屬性類,用於支持請求打印或頁面設置對話框保持顯示在全部窗口或某個特定窗口的頂部。

javax.swing.DefaultComboBoxModel javax.swing.DefaultListModel

  • void addAll(Collection):添加集合中存在的全部元素。
  • void addAll(int, Collection):從指定的索引開始添加集合中存在的全部元素。

javax.swing.ListSelectionModel

  • int[] getSelectedIndices():按遞增順序返回選擇模型中全部選定索引的數組。
  • int getSelectedItemsCount():返回所選項的數量。

jdk.jshell.EvalException

jshell.JShellException getCause():返回此EvalException表示的執行客戶端中throwable的包裝緣由,若是緣由不存在或未知,則返回null。

相關文章
相關標籤/搜索