Subscribed unsubscribe Subscribe Subscribe

Kengo's blog

Technical articles about original projects, JVM, Static Analysis and JavaScript.

GoogleのJava基礎ライブラリguava librariesというものがあるらしい

Google Collections Libraryを使おうと思ってGoogle Codeにアクセスしたら、開発が継続されていないことに気づきました。どうやらGuavaというプロダクトにマージされたようです。

This project has evolved into Guava!

http://code.google.com/p/google-collections/

Guavaは1年前に0.5としてリリースされたものが初めらしいですが、今日までその存在を知りませんでした。今検索しても日本語の情報は@ITの記事しかヒットしないようで、まだメジャーではないようです。個人的には1年経ってもバージョンが0.1しか変化していない点に不安を覚えていますが、ActivityがHighなので個人利用には問題ないでしょう。
なお、機能の概要は公式PDFに載っています。また2つほどクラスを試してみましたので、感想をちょっと残しておきます。

com.google.common.base.Preconditions

PreconditionsはCollections Libraryにも存在していたもので、公開メソッドの前提条件を確認するために使用します。もし今までNullPointerException, IllegalArgumentException, IllegalStateException, そしてIndexOutOfBoundsExceptionを明示的に投げている箇所があれば、Preconditionsクラスの利用でコードを短くできるでしょう。
利用例は公式PDFの他、gihyo.jpにも掲載されています。

com.google.common.base.Splitter

これはCollections Libraryには含まれていなかったもので、Joinerの逆の働きをします。String#split(String)は配列を返しますが、Splitterが返すのはIterableです。

Splitter commaSplitter = Splitter.on(",").trimResults(CharMatcher.JAVA_WHITESPACE);
for (String s : commaSplitter.split("a, b,c ,\td, e ")) {
	System.out.printf("\"%s\",", s);	// "a","b","c","d","e"
}

正規表現が使えたりtrimできたりnullをスキップするomitEmptyStrings()が用意されていたりと便利ではありますが、正規表現のグループが使えないなど細かいところに手が届かない印象です。現時点での用途は限られるのではないでしょうか。