Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職

コレクションを初期化する

匿名クラスと初期化ブロックの構文を利用することで、インスタンス化に際してまとめて配下の要素をセットできます。

CollInit.java

package com.example.mynavi.collection;

import java.util.ArrayList;
import java.util.List;

public class CollInit {

  public static void main(String[] args) {
    List<String> list = new ArrayList<String>() {
      {
        add("Windows");
        add("Linux");
        add("OS X");
      }
    };
    System.out.println(list);	// 結果:[Windows, Linux, OS X]
  }
}

外枠の{…}が匿名クラスを表す定義ブロック、内側の{…}が初期化ブロックを意味します。匿名クラスの配下ではコンストラクターを指定することはできませんので、初期化ブロックでaddメソッドを呼び出し、オブジェクトを追加しています。

note

ダイアモンド構文
JavaSE 7以降では、ダイヤモンド構文が導入され、右辺の要素型(<...>の中身)を省略できるようになりました(左辺で要素型は明らかなためです)。よって、以下の文は同じ意味です。

List<String> list = new ArrayList<String>();
List<String> list = new ArrayList<>();

冗長な構文をあえて利用する意味はありませんので、JavaSE 7以降の環境ではダイヤモンド構文を積極的に利用していきましょう。

コレクションフレームワーク
コレクションフレームワーク
コレクションを初期化する
synchronizedList/synchronizedMap/synchronizedSetメソッド
ArrayListクラス
asListメソッド
toArrayメソッド
LinkedList
HashMap
TreeMap
NavigableMap
HashSet
ArrayDeque

Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職