Java 10の新API 70以上を解説:不変コレクション、Optional改善など
JDK 10リリースではJavaライブラリに70以上の新しいAPIとオプションが追加されました。主な拡張機能は以下の通りです。
Optional.orElseThrow()メソッド
java.util.Optionalクラスに新しいメソッドorElseThrow()が追加され、get()メソッドの推奨代替となりました。
不変コレクション作成API
List、Set、Mapインターフェースに新しいcopyOf()メソッドが追加され、既存のコレクションから新しいインスタンスを作成できます。また、CollectorクラスにtoUnmodifiableList()、toUnmodifiableSet()、toUnmodifiableMap()メソッドが追加され、ストリームの要素を不変コレクションに収集できます。
JRE最終使用状況追跡の無効化
実行中のVMでJREの最終使用状況追跡を無効化するフラグjdk.disableLastUsageTrackingが導入されました。
パスワードのハッシュ化
jmxremote.passwordファイル内の平文パスワードが、JMXエージェントによってSHA3-512ハッシュで上書きされるようになりました。
Javadocの複数スタイルシート対応
javadocコマンドに--add-stylesheetオプションが追加され、生成ドキュメントで複数のスタイルシートを使用可能になりました。
Javadocのオーバーライドメソッド対応
javadocコマンドに--overridden-methods=valueオプションが追加。多くのクラスが継承メソッドをオーバーライドしても仕様を変更しない場合、これらのメソッドを他の継承メソッドとグループ化して、再度別個にドキュメント化する代わりにできます。
Javadocのサマリー対応
API説明のサマリーとして使用するテキストを指定するインラインタグ{@summary ...}が利用可能になりました。デフォルトでは最初の文からサマリーが推論されます。
使用例
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 {
// 不変リストを取得
List<Integer> copyOfIds = List.copyOf(ids);
copyOfIds.add(6);
} catch(UnsupportedOperationException e) {
System.out.println("Collection is not modifiable.");
}
try {
// ストリームから不変リストを取得
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.
Java
- Java演算子をマスター:種類、構文、実践例
- Javaコメント:種類、使い方、ベストプラクティス
- Java拡張forループをマスター:構文、例、ベストプラクティス
- Java文字列をマスター:生成、メソッド、ベストプラクティス
- Javaインターフェース完全ガイド:概念、実装、ベストプラクティス
- Java無名インナークラス完全ガイド:定義、構文、実践例
- Javaのtry-with-resourcesをマスターする:自動リソース管理の仕組みと活用法
- Javaアノテーション完全ガイド:種類、配置場所、実践例
- Javaアサーション完全ガイド:バグ早期発見とコード信頼性の向上
- Javaオートボクシングとアンボクシング完全ガイド:実例とベストプラクティス
- Java 10の新API 70以上を解説:不変コレクション、Optional改善など