その他の新機能

ここまでに挙げたものの他にも既存のAPIに対して様々な機能追加が行われている。スペースの都合ですべては紹介できないが、簡単に紹介しよう。

便利なユーティリティの追加

Stringには配列やListなどに格納された文字列を指定したデリミタで結合するためのjoin()メソッドが追加されている。

List<String> list = Arrays.asList("Java", "Groovy", "Scala");
String str = String.join(", ", list);

また、java.utilパッケージにはBase64エンコード/デコードを行うためのユーティリティが追加されている。

// エンコード
String encoded = Base64.getEncoder().encodeToString(input);
// デコード
byte[] decoded = Base64.getDecoder().decode(encoded);

ジェネリクスの改善

Java 7ではダイヤモンド演算子が導入されジェネリクスの型パラメータを省略できるようになったが、Java 8ではメソッド呼び出しの引数にもダイヤモンド演算子が使用できるようになっている。

Map<String, List<String>> map = new HashMap<>();
map.put("キー", new ArrayList<>()); // Java 7ではコンパイルエラー

また、Java 8ではメソッドの型パラメータも自明な場合は省略できるようになっている。

// Java 7の場合
List<List<String>> list = new ArrayList<>();
list.add(Collections.<String>emptyList());

// Java 8の場合
List<List<String>> list = new ArrayList<>();
list.add(Collections.emptyList());