自从上个月进入“减速(ramp-down)”阶段以来,劳务派遣管理系统,JDK 11 的特性已经处于冻结状态。这些重大的变革已被列为 JEP(JDK Enhancement Proposal 特性加强提议)。另外,JDK 11 中也有许多除 JEP 之外的变革,但官方尚未总结。因此,本文将列出我所知道的 JDK 11 中的 API 改观。
String
lines()
字符串实例要领,利用专门的 Spliterator 来懒惰地提供源字符串中的行
jshell> "test\nhoge\n".lines().map(String::toUpperCase).toArray() $11 ==> Object[2] { "TEST", "HOGE" }
repeat(int)
凭据参数 int 提供的次数来反复字符串的运行次数
jshell> "test".repeat(3) $7 ==> "testtesttest"
isBlank()
验证当前字符串是否为空,可能是否只包罗空缺字符(空缺字符由 Character.isWhiteSpace(int) 验证)
jshell> var halfSpace = "\u0020" halfSpace ==> " " jshell> halfSpace.isBlank() $11 ==> true jshell> var fullSpace = "\u3000" fullSpace ==> " " jshell> fullSpace.isBlank() $13 ==> true
strip()/stripLeading()/stripTrailing()
这三个要领的浸染别离是去掉字符串头和尾的空缺符、字符串头的空缺符、字符串尾的空缺符,根基与 trim()/trimLeft()/trimRight() 要领沟通,不外它们的空缺字符由 Character.isWhiteSpace(int) 验证
jshell> var aaa = fullSpace + "aaa" + fullSpace aaa ==> " aaa " jshell> aaa.strip() $14 ==> "aaa" jshell> aaa.trim() $15 ==> " aaa "
CharSequence
compare(CharSequence, CharSequence)
按字典顺序举办排序
它被 CharSequence/StringBuffer/StringBuilder 中的 compareTo() 利用。因此,这三个类都实现了 Comparable。
Character
toString(int)
JDK 11 使这个进程变得越发利便
JDK10.0.1
jshell> Character.toString(65) | Error: | incompatible types: possible lossy conversion from int to char | Character.toString(65) |
JDK11ea14
jshell> Character.toString(65) $9 ==> "A"
Path
of(String, String…)
此前我们需要利用 Paths.get()。此刻,我们像其他类一样利用 of()。
Files
writeString(Path, CharSequence)
我们可以利用该要领来生存一个 String 字符串。
jshell> Files.writeString(Path.of("test.txt"), "Hello!!!") $3 ==> test.txt
readString(Path)
我们可以利用该要领来读取一个 String 字符串。
jshell> Files.readString(Path.of("test.txt")) $4 ==> "Hello!!!"
Reader
nullReader()
利用该要领,昆山软件公司,昆山软件开发,我们可以获得一个不执行任何操纵的 Reader。
Writer
nullWriter()
利用该要领,我们可以获得一个不执行任何操纵的 Writer。
InputStream
nullInputStream()
利用该要领,我们可以获得一个不执行任何操纵的 InputStream。
OutputStream
nullOutputStream()
利用该要领,我们可以获得一个不执行任何操纵的 OutputStream。
Predicate
not(Predicate)
此前在需要反转条件的处所,我们选择不利用要领引用。此刻相反,我们可以利用要领引用。
jshell> Stream.of("aa", "", "bb").filter(Predicate.not(String::isEmpty)).toArray() $23 ==> Object[2] { "aa", "bb" }
Collection
toArray(IntFunction)
此前,我们需要利用像 list.toArray(new String
) 这样的无气势气魄标志(non-stylish notation)来从一个荟萃建设一个范例化数组。此刻,我们可以以气势气魄标志(stylish notation)的方法举办编写。
jshell> List.of("aa","bb").toArray(String[]::new) $1 ==> String[2] { "aa", "bb" }
Optional/OptionalInt/OptionalLong/OptionalDouble
isEmpty()
isPresent() 要领此前已经存在,此刻我们利用 isEmpty() 要领。
jshell> Optional.ofNullable(null).isEmpty() $5 ==> true
TimeUnit
convert(Duration)
该要领已经添加到 java.util.concurrent.TimeUnit 中。
Pattern
asMatchPredicate()
到今朝为止,只有 asPredicate() 要领,但此刻我们还拥有 asMatchPredicate() 要领。
jshell> var pred = Pattern.compile("aaa").asPredicate() pred ==> java.util.regex.Pattern$Lambda$25/0x00000008000b5040@2f686d1f jshell> pred.test("aaa") $6 ==> true jshell> pred.test("aaab") $7 ==> true jshell> var matPred = Pattern.compile("aaa").asMatchPredicate() matP ==> java.util.regex.Pattern$Lambda$24/0x00000008000b6440@402a079c jshell> matPred.test("aaa") $9 ==> true jshell> matPred.test("aaab") $10 ==> false
ListSelectionModel
已添加 getSelectedIndices() / getSelectedCount() 要领
Thread
destroy()/stop(Throwable)
移除 destroy() 要领,保存 stop() 要领。
Policy
已移除 javax.security.auth.Policy。
ArrayIndexOutOfBoundsException
抛出的异常信息已修改:
JDK10.0.1
jshell> new int[]{}[0] | java.lang.ArrayIndexOutOfBoundsException thrown: 0 | at (#8:1)
JDK11ea14
jshell> new int[]{}[0] | Exception java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0 | at (#4:1)
IndexOutOfBoundsException
在本次改观中,已在异常信息中移除 hyphens。