継承?委譲?いや!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 で定義するメソッド名はなんでもいい、
コンパイラは、引数の型と返り値の型から、
自動型変換を行ってくれる。