OSGIでの名前で特定のクラスのクラスローダーを取得するにはどうすればよいですか?クラスは別のパッケージで宣言されており、エクスポートされない場合があります。
質問する
779 次
2 に答える
3
クラスの名前はそれを一意に識別するのに十分ではないため、これは基本的に不可能です。複数のモジュールに同じ名前のクラスが含まれている場合があります。これは、モジュールの分離を提供するモジュールシステムの必然的な特性です。
実際、「通常の」Javaでも、クラスのIDは完全修飾名とClassLoaderで構成されているため、理論的には不可能です。つまり、クラスのIDの半分を、残りの半分だけを指定して取得する方法を求めています。
どのバンドル/モジュールにクラスが含まれているかがわかっている場合は、そのバンドルBundle.loadClass("Foo")
から、呼び出し可能なClassオブジェクトを使用してクラスをロードできますgetClassLoader()
。
于 2013-01-28T12:48:04.707 に答える
0
なぜ他のバンドルからクラスをロードしたいのですか?よりクリーンな方法は、クラスを含むバンドル内のクラスをインスタンス化し、サービスとして公開することです。または、複数のインスタンスが必要な場合は、ファクトリをサービスとして登録できます。
于 2013-01-29T09:30:29.090 に答える