Java 0 新API和选项
JDK 10发布了70多个新的API和选项,添加到了Java库中。以下是一些重要的改进。
Optional.orElseThrow() 方法
java.util.Optional类中新增了一个新方法 orElseThrow() ,现在是 get() 方法的首选替代。
用于创建不可修改集合的API
List、Set和Map接口中新增了一个新方法 copyOf() ,可以从现有的集合实例创建新的集合实例。Collector类新增了方法 toUnmodifiableList()、toUnmodifiableSet()和toUnmodifiableMap() ,将流的元素放入一个不可修改的集合中。
禁用JRE最后使用情况跟踪
引入了一个新的标志jvm.disableLastUsageTracking,用于禁用正在运行的虚拟机的JRE最后使用情况跟踪。
散列密码
JMX代理现在将jmxremote.password文件中的明文密码覆盖为它们的SHA3-512散列值。
javadoc对多个样式表的支持
javadoc命令新增了一个–add-stylesheet选项。该选项支持在生成的文档中使用多个样式表。
javadoc对重写方法的支持
javadoc命令新增了一个–overridden-methods=value选项。许多类重写继承的方法,但不改变规范。–overridden-methods=value选项允许将这些方法与其他继承的方法分组,而不是单独文档化它们。
javadoc对摘要的支持
新增了一个内联标签{@summary …},用于指定用作API描述摘要的文本。默认情况下,API描述的摘要从第一句话推断得出。
示例
以下程序展示了在JAVA 10中使用一些新的API。
import java.util.List;
import java.util.stream.Collectors;
public class Tester {
public static void main(String[] args) {
var ids = List.of(1, 2, 3, 4, 5);
try {
// get an unmodifiable list
List<Integer> copyOfIds = List.copyOf(ids);
copyOfIds.add(6);
} catch(UnsupportedOperationException e){
System.out.println("Collection is not modifiable.");
}
try{
// get an unmodifiable list
List<Integer> evenNumbers = ids.stream()
.filter(i -> i % 2 == 0)
.collect(Collectors.toUnmodifiableList());;
evenNumbers.add(6);
}catch(UnsupportedOperationException e){
System.out.println("Collection is not modifiable.");
}
}
}
输出
它将打印以下输出。
Collection is not modifiable.
Collection is not modifiable.