2012-04-11 6 views
1

Android環境下では、自分のクラスのすべてのサブクラスをリストアップする必要があります。 ディレクトリを読んでいるサンプルがあることがわかりました....しかし、私はスレッドやアプリケーションレベル、または別の実行オブジェクトに問い合わせることでそれらを検索したいと思います。私のクラスのサブクラスのリスト

私はobjc_getClassListを使用して、私は私が興味を持っていたものを選択するのiOSの下

誰か用量汎用Javaまたは特定のアンドロイドのライブラリにobjc_getClassListのようなきれいな解決策を見つけるための方法があるかどうか知っていますか?

ありがとうございます。 PS:これらのクラスはすべて特定のJavaパッケージに入っています

+0

リスト<?あなたのクラスを拡張します> –

+0

質問に興味がある人は、なぜ私は現在のクラスのすべてのリストをVMに問い合わせることができないのかと思っています。 VMはこのリストを知らないためです。 Java envでは客観的なCとは異なります。各クラスは呼び出されたときにのみ認識されます。 'static {instructions;}'セクタは、実行時にクラスを参照するときにのみ呼び出されます。 – Freddie

答えて

0

私は私はあなたの質問を理解しなかったが、あなたはAllClassesか何かと呼ばれるクラスを作ることができ、そしてそれにArrayListのサブクラスを入れて、本当にわかりません。次にすべてのサブクラスで AllClasses.subclasses.add(this)を実行します。

ありがとうございます

+0

OOLのこの緩やかな利益。私は、新しいサブクラスが存在するときにユーザーに新しい機能を追加するためにこれが必要です。プログラマがサブクラスを追加するたびに、新しい機能が表示されます。 Javaで可能でない場合は、This(関数ポインタのC配列のように)のようにします! – Freddie

+0

最後に私はあなたのやり方で何かをしました:\ public class PortHelper { \t static ArrayList > portSubclassList; \t static { \t \t portSubclassList = new ArrayList >(); \t} \t静的パブリックボイドaddPortSubclass(クラス C){ \t \t portSubclassList.add(C); \t}} \ ' – Freddie

0

クラスを見つけて、指定されたスーパータイプのサブタイプであるかどうかを調べるには、イントロスペクションとクラスローダーを使用する必要があります。ここではJ2SE上の問題の興味深い実装です:http://nonstop-rp.blogspot.fr/2010/05/java-reflection-know-subclasses-of.html

+0

あなたの答えをありがとう、それはアンドロイド環境の下で回っていない線量です。私はなぜ時間がかかるか見ていきます。それはまさに私が探しているものです。 Francklyは、この種の機能がすべてのOOLに統合されていると私は思っています! – Freddie

関連する問題