有关API更改的完整列表,可在 Github 上获得。
这里列出的是除了java.net.http和jdk.jfr模块之外的所有新方法。没有列出java.security模块中的新方法和类,它们特定于JEP 324和JEP 329的更改(有六个新类和八个新方法)。
java.io.ByteArrayOutputStream
void writeBytes(byte[]): 将参数的所有字节写入输出流
java.io.FileReader
两个允许指定Charset的新构造函数。
java.io.FileWriter
四个允许指定Charset的新构造函数。
java.io.InputStream
io.InputStream nullInputStream(): 返回不读取任何字节的InputStream。当你第一次看到这个方法(以及OutputStream,Reader和Writer中的方法)时,你会想知道它们有什么用处。您可以将它们视为/dev/null,以丢弃您不需要的输出或提供始终返回零字节的输入。
java.io.OutputStream
java.io.Reader
java.io.Writer
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
这里没有新方法,但值得一提的是,现在已从这两个类中删除了runFinalizersOnExit()方法(这可能是兼容性问题)
java.lang.String
我认为这是JDK 11中新API的亮点之一。这里有几个有用的新方法。
您可能会看看strip()并询问这与现有的trim()方法有何不同?答案是如何定义空白在两者之间有所不同。
java.lang.StringBuffer
这两个类都有一个新的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
java.nio.channels.Selector
java.nio.file.Files
java.nio.file.Path
java.util.Collection
Object[] toArray(java.util.function.IntFunction): 使用提供的生成器函数返回包含此集合中所有元素的数组,以分配返回的数组。
java.util.concurrent.PriorityBlockingQueue
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
java.util.zip.Inflater
javax.print.attribute.standard.DialogOwner
这是JDK 11中的一个新类,它是一个属性类,用于支持请求打印或页面设置对话框保持显示在所有窗口或某个特定窗口的顶部。
javax.swing.DefaultComboBoxModel
javax.swing.ListSelectionModel
jdk.jshell.EvalException
jshell.JShellException getCause():返回此EvalException表示的执行客户端中throwable的包装原因,如果原因不存在或未知,则返回null。