2009.07.10
AndroidでリフレクションとJavaCCを試す(前編)
Androidを使うと、Javaによる携帯電話プログラミングが数段パワフルになった感じがします。
Androidのドキュメントを読んでいると、どうやらリフレクションも使えるご様子。
リフレクションとは反響、反映のことです。転じて、Javaにおいてはプログラムが自分自身(プログラム要素)へアクセスするための手段を意味しています。名前だけではちょっとイメージしづらいですね。
簡単に言うと、Javaクラスのフィールドやメソッドの情報を取得するためのAPIです。
・・こんなクラスのこんなメソッドを呼び出したい・・・
・・が、そのメソッドやクラスの名前がプログラムを書いている時点では未知である
(たとえば、開発者ではなく、利用者が指定する)
そんなときに使います。
テストや分散処理などのフレームワークづくりをしたいときや、APIを提供したいときに便利です。
今回は以前、JavaCCを使って作成した電卓を拡張し、リフレクションでjava.lang.Mathに含まれるメソッドを呼び出すことが可能な、高機能電卓にしてみましょう。
さらに、Android上で電卓を実行できるようにします。
果たしてAndroid上でのリフレクションは簡単に使うことができるのか?JavaCCプログラムをAndroido上で動かすことはできるのか?
試したいと思います。
リフレクションなぞ知っとるわい、というかたは後半を、JavaCCによる構文解析器について知りたいかたは土日でつくるコンパイラをご参照ください。
前半ではAndroidでもJavaでも使える(はずの)リフレクションの利用手順を簡単に追っていくことにしましょう。
(more…)