GuavaのImmutable Collectionsの実装サンプル

GuavaのImmutable Collectionsを見てみる。 (Java 9 のCollections APIでも同様のstatic factory methodが実装予定)

一般にImmutableであると、参照効率が良い, スレッドセーフなどのメリットがある。 github.com

以下、サンプル。

public static void main( String[] args )
{
    // static factory patternで宣言
    List<String> signals = ImmutableList.of("red","yellow","green");
    signals.add("pink"); // throw new UnsupportedOperationException


    // 初期化時の処理はbuilderも使用可能
    ImmutableList.Builder<String> pokemonBuilder = ImmutableList.builder();
    pokemonBuilder.add("zenigame");
    pokemonBuilder.add("hitokage", "hushigidane"); // 可変長引数も代入可能

    List<String> pokemonAtGoldAndSilver = Lists.newArrayList("waninoko", "hinoarashi", "tikorita");
    pokemonBuilder.addAll(pokemonAtGoldAndSilver); // Iterable型も代入可能

    List<String> pokemon = pokemonBuilder.build();
    pokemon.add("pikachu"); // throw new UnsupportedOperationException
}