例外処理
例外とは、プログラムのなかでの想定外な事象(エラー)のことで、例外処理とは、例外が発生した際に行う処理のことです。
Javaでは例外をクラスにより管理しており、例外が発生したときには、例外クラスのオブジェクトが生成されることになります。Throwableクラスは、そのような例外クラスの、すべてのスーパークラスです。
Throwableクラスには、例外オブジェクトの情報を文字列で返すgetMessageメソッド、スタックトレース情報を取得するprintStackTraceメソッドなど、例外処理の基本的なメソッドが定義されています。
オブジェクト操作
Objectクラスは、Javaのすべてのスーパークラスです。すべてのオブジェクトは、このクラスのメソッドを実装します。
オブジェクトの文字列表現を返すtoStringメソッドや、スレッド処理に関するメソッドが定義されています。
Classクラス
実行時にオブジェクトのクラス情報を調べるといった行いを、リフレクションと呼びます。リフレクションを用いることで、クラスの名前やメソッドの名前などを、実行時に知ることができます。その際に、クラスの情報などを保持するためのクラスが、Classクラスです。
前述のObjectクラスには、getClassメソッドが定義されています。このメソッドはClassオブジェクトを取得するものです。Objectクラスは、Javaのすべてのスーパークラスなので、どんなオブジェクトでもClassオブジェクトを用いて、クラスの情報を取得することができます。
Classクラスには、次のようなクラス名を取得するgetNameメソッドや、メソッドを列挙するgetMethodsメソッドなどがあります。
Class<?> c = this.getClass(); // クラスオブジェクトの取得 String name = c.getName(); // クラス名の参照
スレッド処理
スレッドとは、プログラム実行の最小単位です。Andoridアプリケーションには、少なくともひとつのスレッドがあります。また、Andoridでは複数のスレッドを並行して実行するマルチスレッド処理が可能です。ただし、AndroidのGUIでは、シングルスレッドモデルが採用されているため、たとえばGUIの更新などは、ひとつのスレッドに限定されています。
Threadクラスは、スレッドを扱う基本のクラスです。Android SDKにもスレッド処理のAPIが含まれていますが、基本となるのはjava.langパッケージに含まれるスレッドクラスです。
スレッド処理の手順
スレッドの処理としては、次のような手順が一般的です。
- java.langパッケージで定義されているRunnableインタフェースを実装する
- Runnableで定義されているrunメソッドを実装し、スレッドとして実行したい処理を記述する
- Runnableインタフェースを実装したオブジェクトを引数にして、Threadクラスをインスタンス化する
- Threadクラスのstartメソッドを呼びだしてスレッドを実行する
- Threadクラスのjoinメソッドを呼びだしてスレッド終了を待機する
今回は、この手順をもとにして、スレッドを使った、ごくかんたんなアニメーション処理のサンプルを紹介することにします。