资讯专栏INFORMATION COLUMN

Java JDK11中的新API

pepperwang / 3182人阅读

摘要:将参数的所有字节写入输出流两个允许指定的新构造函数。四个允许指定的新构造函数。返回从此字符串中提取的行的流,由行终止符分隔。如上所述,使用指定的将字符编码为字节。返回此表示的执行客户端中的包装原因,如果原因不存在或未知,则返回。

有关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

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。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/73161.html

相关文章

  • Java11的新特性

    摘要:从版本开始,不再单独发布或者版本了,有需要的可以自己通过去定制官方解读官方细项解读稳步推进系列六的小试牛刀一文读懂的为何如此高效弃用引擎 Java语言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的新特性 Java10的新特性 Java11的新特性 Java12的新特性 Java13的新特性 序 本文主要讲述一下Java11的新...

    April 评论0 收藏0
  • Java12的新特性

    摘要:的这个特性新增了两个参数分别是及,设置为的话,表示禁用。语法层面引入了版本的层面引入了,引入,让支持,对等新增方法方面引入了版本的,不过的没有另外主要对及进行了改进其中对支持了,默认是开启,使用可以禁用对于则新增支持以及特性 Java语言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的新特性 Java10的新特性 Java11的新...

    liujs 评论0 收藏0
  • Java9的新特性

    摘要:新特性概述系列一安装及使用系列二运行系列三模块系统精要系列四更新系列五系列六系列七系列八系列九与的区别迁移注意事项参数迁移相关选项解析使用构建实例使用示例带你提前了解中的新特性 Java语言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的新特性 Java10的新特性 Java11的新特性 Java12的新特性 Java13的新特性...

    ddongjian0000 评论0 收藏0
  • 聊聊 Java8 以后各个版本的新特性

    摘要:于是抽时间看了看以后各个版本的特性,做了一个总结。年和公开版本发布,取名为。此后对应版本就是,。发布,是一个重大版本更新。在此之后,就是每六个月发布一次新版本。以上和参考资料聊了一些关于的历史,下面我们看看各个版本有那些新特性。 【这是 ZY 第 11 篇原创技术文章】 某天在网上闲逛,突然看到有篇介绍 Java 11 新特性的文章,顿时心里一惊,毕竟我对于 Java 的版本认识...

    K_B_Z 评论0 收藏0
  • 一篇文章了解新发布的Java JDK 11

    摘要:到年将提供修复和安全更新。中期版本将每六个月发布一次。将扩展类文件格式以支持新的常量池形式。将提供一个低开销的数据收集框架,用于对应用程序和进行故障排除。项目负责人表示,维护成本和低使用率并不能证明其保留是合理的。将是第一个获得支持的平台。 Java JDK 11删除了CORBA,Java EE和JavaFX支持,但添加了十几个主要新功能。 Java Development Kit(J...

    Ethan815 评论0 收藏0

发表评论

0条评论

pepperwang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<