ScalaからJavaのライブラリをつかう
scalaからjavaの外部ライブラリを適当に使えないものかと思い、
以前ふれたvelocityを試してみます。
package test
import java.io._;
import org.apache.velocity._;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.exception.MethodInvocationException;
import org.apache.velocity.exception.ParseErrorException;
import org.apache.velocity.exception.ResourceNotFoundException;
object ImportTest extends App {
def velo()={
Velocity.init()
var context = new VelocityContext();
var visitor=new Visitor("Tanaka")
context.put("visitor",visitor)
var sw=new StringWriter()
var template=Velocity.getTemplate("order.vm","UTF-8")
template.merge(context, sw)
println(sw.toString())
sw.flush()
}
velo()
}
class Visitor(name:String){
def getname()={
name
}
}
次に、雛形となるファイルを作成。order.vmと名付けます。
$visitor.name
ご来店ありがとうございます。
これでおっけー。実行すると…
Tanaka
ご来店ありがとうございます。
このようにうまくいきました。
ちょっと戸惑ったのがscalaとjavaのコンストラクタの違いです。
自作のコンストラクタを一つだけ持つ場合、わざわざクラスに書く必要がなくクラスの引数として指定してあげればそれでおっけーということです。
まあなんにせよjavaのライブラリを使えるというのはかなり助かります。