NO_NAME

適当に技術・仕事・ライフハックの話を書いていく予定です。

ClassLoader#getResource(String) は利用できない

Android の SQLiteDatabaseHelper を拡張し、 Rails の migration のような仕組みを構築しようと考えた。
あるフォルダ内のあるインターフェイスを実装したクラスをインスタンス化する形にしたかったので、ClassLoader#getResource(String) を使ってフォルダ内の全ファイルを取得しようと考えたのだが、 null が帰ってきた。

まぁ正直、通常の Jarファイルではないのでまともな値が帰ってこない可能性は予期していたのだが、自分のプログラムミスではないか調べてみたところ、ちょうど StackOverflow に同じ質問があがっていた。

android - Get an instance of all subclasses of a base class in a package - Stack Overflow
http://stackoverflow.com/questions/5183271/get-an-instance-of-all-subclasses-of-a-base-class-in-a-package

やはりできないようだ。

ビルド時にXMLとしてファイル一覧を書き出しておき、それを読み込んでインスタンス化するという方法が紹介されていたので、時間ができ次第試してみることにしよう。
それまではクラスを手動で列挙するしかないかな。