継承?委譲?いや!Views!

POIのラッパをViewsを利用するように書き換えた。
もともと、委譲形式で書いていたので、移行は楽だった。

ちなみに、Viewsについて一応書いておくと

まず、以下のような定義のクラスAがあるとする

class A {
  def hoge = println("hoge")
}

これを拡張するためにクラスBを書く

class B {
  def piyo = println("piyo")
}

そして、

implicit def clsssAToB(a:A) = new B

と書くと、

scala> val a = new A
a: A = A@104a681

scala> a.hoge
hoge

scala> a.piyo
piyo

のように、クラスAに無いけれどクラスBにあるメソッドをクラスAのインスタンスから呼び出せるようになる。

この際implicit で定義するメソッド名はなんでもいい、
コンパイラは、引数の型と返り値の型から、
自動型変換を行ってくれる。