ClassLoader クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
クラス ローダーは、クラスの読み込みを担当するオブジェクトです。
[Android.Runtime.Register("java/lang/ClassLoader", DoNotGenerateAcw=true)]
public abstract class ClassLoader : Java.Lang.Object
[<Android.Runtime.Register("java/lang/ClassLoader", DoNotGenerateAcw=true)>]
type ClassLoader = class
inherit Object
- 継承
- 派生
- 属性
注釈
クラス ローダーは、クラスの読み込みを担当するオブジェクトです。 クラス ClassLoader
は抽象クラスです。 クラスのバイナリ名を指定すると、クラス ローダーは、 クラスの定義を構成するデータの検索または生成を試みる必要があります。 一般的な方法は、名前をファイル名に変換し、その名前の "クラス ファイル" をファイル システムから読み取る方法です。
すべての Class <tt>Class</tt>
オブジェクトには、 Class#getClassLoader() reference
それを定義した への が ClassLoader
含まれています。
Class
配列クラスのオブジェクトはクラス ローダーによって作成されませんが、Java ランタイムで必要に応じて自動的に作成されます。 によって Class#getClassLoader()
返される配列クラスのクラス ローダーは、その要素型のクラス ローダーと同じです。要素型がプリミティブ型の場合、配列クラスにはクラス ローダーはありません。
アプリケーションは、 のサブクラス ClassLoader
を実装して、Java 仮想マシンがクラスを動的に読み込む方法を拡張します。
クラス ローダーは、通常、セキュリティ ドメインを示すためにセキュリティ マネージャーによって使用される場合があります。
クラスは ClassLoader
、委任モデルを使用してクラスとリソースを検索します。 の ClassLoader
各インスタンスには、親クラス ローダーが関連付けられています。 クラスまたはリソースの検索を要求されると、 ClassLoader
インスタンスは、クラスまたはリソース自体を検索する前に、クラスまたはリソースの検索を親クラス ローダーに委任します。 仮想マシンの組み込みクラス ローダー ("ブートストラップ クラス ローダー" と呼ばれます) には、それ自体には親がありませんが、インスタンスの ClassLoader
親として機能する場合があります。
クラスの同時読み込みをサポートするクラス ローダーは、em>並列対応</em> クラス ローダーと呼ばれ<、 メソッドを呼び出してクラス初期化時に自身を登録する#registerAsParallelCapable <tt>ClassLoader.registerAsParallelCapable</tt>
必要があります。 ClassLoader
クラスは、既定で並列対応として登録されていることに注意してください。 ただし、サブクラスが並列可能な場合は、まだ自身を登録する必要があります。 <br> 委任モデルが厳密に階層構造ではない環境では、クラス ローダーは並列対応である必要があります。そうしないと、クラスの読み込みがデッドロックにつながる可能性があります。これは、ローダー ロックがクラスの読み込みプロセスの間保持されるためです (メソッドを参照)。#loadClass <tt>loadClass</tt>
通常、Java 仮想マシンは、プラットフォームに依存する方法でローカル ファイル システムからクラスを読み込みます。 たとえば、UNIX システムでは、仮想マシンは環境変数で定義されたディレクトリからクラスを CLASSPATH
読み込みます。
ただし、一部のクラスはファイルから生成されない場合があります。ネットワークなどの他のソースから生成された場合や、アプリケーションによって構築される可能性があります。 メソッド #defineClass(String, byte[], int, int) <tt>defineClass</tt>
は、バイト配列を クラス Class
のインスタンスに変換します。 この新しく定義されたクラスのインスタンスは、 を使用して Class#newInstance <tt>Class.newInstance</tt>
作成できます。
クラス ローダーによって作成されたオブジェクトのメソッドとコンストラクターは、他のクラスを参照できます。 参照されるクラスを特定するために、Java 仮想マシンは、最初にクラスを #loadClass <tt>loadClass</tt>
作成したクラス ローダーのメソッドを呼び出します。
たとえば、アプリケーションは、サーバーからクラス ファイルをダウンロードするネットワーク クラス ローダーを作成できます。 サンプル コードは次のようになります。
<blockquote>
ClassLoader loader = new NetworkClassLoader(host, port);
Object main = loader.loadClass("Main", true).newInstance();
. . .
</blockquote>
ネットワーク クラス ローダー サブクラスでは、 メソッド #findClass <tt>findClass</tt>
を定義し、 loadClassData
ネットワークからクラスを読み込む必要があります。 クラスを構成するバイトをダウンロードしたら、 メソッド #defineClass <tt>defineClass</tt>
を使用してクラス インスタンスを作成する必要があります。 実装例を次に示します。
<blockquote>
class NetworkClassLoader extends ClassLoader {
String host;
int port;
public Class findClass(String name) {
byte[] b = loadClassData(name);
return defineClass(name, b, 0, b.length);
}
private byte[] loadClassData(String name) {
// load the class data from the connection
. . .
}
}
</blockquote>
<h3> "name">Binary names</h3>
内のClassLoader
メソッドのパラメーターとしてString
指定されるクラス名は、cite>The Java&trade で定義されている<バイナリ名である必要があります。言語仕様</引用>。
有効なクラス名の例は次のとおりです。 <blockquote>
"java.lang.String"
"javax.swing.JSpinner$DefaultEditor"
"java.security.KeyStore$Builder$FileBuilder$1"
"java.net.URLClassLoader$3$1"
</blockquote>
1.0 に追加されました。
の java.lang.ClassLoader
Java ドキュメント。
このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。
コンストラクター
ClassLoader() |
メソッド |
ClassLoader(ClassLoader) |
指定した親クラス ローダーを使用して委任用に新しいクラス ローダーを作成します。 |
ClassLoader(IntPtr, JniHandleOwnership) |
JNI オブジェクトのマネージド表現を作成するときに使用されるコンストラクター。ランタイムによって呼び出されます。 |
プロパティ
Class |
この |
Handle |
基になる Android インスタンスへのハンドル。 (継承元 Object) |
JniIdentityHashCode |
クラス ローダーは、クラスの読み込みを担当するオブジェクトです。 (継承元 Object) |
JniPeerMembers |
クラス ローダーは、クラスの読み込みを担当するオブジェクトです。 |
Parent |
委任用の親クラス ローダーを返します。 |
PeerReference |
クラス ローダーは、クラスの読み込みを担当するオブジェクトです。 (継承元 Object) |
SystemClassLoader |
委任用のシステム クラス ローダーを返します。 |
ThresholdClass |
この API は Mono for Android インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 |
ThresholdType |
この API は Mono for Android インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 |
メソッド
ClearAssertionStatus() |
このクラス ローダーの既定のアサーション状態を に設定し、クラス ローダーに |
Clone() |
このオブジェクトのコピーを作成して返します。 (継承元 Object) |
DefineClass(Byte[], Int32, Int32) |
古い.
バイト配列を クラス |
DefineClass(String, Byte[], Int32, Int32) |
バイト配列を クラス |
DefineClass(String, Byte[], Int32, Int32, ProtectionDomain) |
バイト配列を クラス |
DefineClass(String, ByteBuffer, ProtectionDomain) |
|
DefinePackage(String, String, String, String, String, String, String, URL) |
この |
Dispose() |
クラス ローダーは、クラスの読み込みを担当するオブジェクトです。 (継承元 Object) |
Dispose(Boolean) |
クラス ローダーは、クラスの読み込みを担当するオブジェクトです。 (継承元 Object) |
Equals(Object) |
他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。 (継承元 Object) |
FindClass(String) |
指定したバイナリ名を持つ クラスを検索します。 |
FindLibrary(String) |
ネイティブ ライブラリの絶対パス名を返します。 |
FindLoadedClass(String) |
このローダーが Java 仮想マシンによって、そのバイナリ名を持つクラスの開始ローダーとして記録されている場合は、指定されたバイナリ名のクラスを返します。 |
FindResource(String) |
指定した名前のリソースを検索します。 |
FindResources(String) |
指定した名前を持つすべてのリソースを表す オブジェクトの列挙体 |
FindSystemClass(String) |
指定したバイナリ名を持つクラスを検索し、必要に応じて読み込みます。 |
GetHashCode() |
オブジェクトのハッシュ コード値を返します。 (継承元 Object) |
GetPackage(String) |
|
GetPackages() |
このクラス ローダーとその先祖によって定義されているすべての を |
GetResource(String) |
指定した名前のリソースを検索します。 |
GetResourceAsStream(String) |
指定したリソースを読み取るための入力ストリームを返します。 |
GetResources(String) |
指定した名前のすべてのリソースを検索します。 |
GetSystemResource(String) |
クラスの読み込みに使用する検索パスから、指定した名前のリソースを検索します。 |
GetSystemResourceAsStream(String) |
クラスの読み込みに使用される検索パスから指定された名前のリソースを読み取るために開きます。 |
GetSystemResources(String) |
クラスの読み込みに使用する検索パスから、指定した名前のすべてのリソースを検索します。 |
JavaFinalize() |
オブジェクトへの参照がなくなったとガベージ コレクションが判断したときに、オブジェクトのガベージ コレクターによって呼び出されます。 (継承元 Object) |
LoadClass(String) |
指定したバイナリ名を持つ クラスを読み込みます。 |
LoadClass(String, Boolean) |
指定したバイナリ名を持つ クラスを読み込みます。 |
LoadClassAsync(String) |
クラス ローダーは、クラスの読み込みを担当するオブジェクトです。 |
LoadClassAsync(String, Boolean) |
クラス ローダーは、クラスの読み込みを担当するオブジェクトです。 |
Notify() |
このオブジェクトのモニターで待機している 1 つのスレッドを起動します。 (継承元 Object) |
NotifyAll() |
このオブジェクトのモニターで待機しているすべてのスレッドを起動します。 (継承元 Object) |
RegisterAsParallelCapable() |
呼び出し元を並列対応として登録します。 |
ResolveClass(Class) |
指定したクラスをリンクします。 |
SetClassAssertionStatus(String, Boolean) |
このクラス ローダー内の名前付き最上位クラスと、その中に含まれる入れ子になったクラスの目的のアサーションの状態を設定します。 |
SetDefaultAssertionStatus(Boolean) |
このクラス ローダーの既定のアサーション状態を設定します。 |
SetHandle(IntPtr, JniHandleOwnership) |
Handle プロパティを設定します。 (継承元 Object) |
SetPackageAssertionStatus(String, Boolean) |
名前付きパッケージのパッケージの既定のアサーション状態を設定します。 |
SetSigners(Class, Object[]) |
クラスの署名者を設定します。 |
ToArray<T>() |
クラス ローダーは、クラスの読み込みを担当するオブジェクトです。 (継承元 Object) |
ToString() |
オブジェクトの文字列形式を返します。 (継承元 Object) |
UnregisterFromRuntime() |
クラス ローダーは、クラスの読み込みを担当するオブジェクトです。 (継承元 Object) |
Wait() |
現在のスレッドが起動するまで待機します。通常<は、通知</em> または>< em 中断</em によって待機します>。> (継承元 Object) |
Wait(Int64) |
現在のスレッドが起動するまで待機します。通常<は、通知></em> または <>em 中断</em>、または特定のリアルタイムが経過するまで待機します。 (継承元 Object) |
Wait(Int64, Int32) |
現在のスレッドが起動するまで待機します。通常<は、通知></em> または <>em 中断</em>、または特定のリアルタイムが経過するまで待機します。 (継承元 Object) |
明示的なインターフェイスの実装
IJavaPeerable.Disposed() |
クラス ローダーは、クラスの読み込みを担当するオブジェクトです。 (継承元 Object) |
IJavaPeerable.DisposeUnlessReferenced() |
クラス ローダーは、クラスの読み込みを担当するオブジェクトです。 (継承元 Object) |
IJavaPeerable.Finalized() |
クラス ローダーは、クラスの読み込みを担当するオブジェクトです。 (継承元 Object) |
IJavaPeerable.JniManagedPeerState |
クラス ローダーは、クラスの読み込みを担当するオブジェクトです。 (継承元 Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
クラス ローダーは、クラスの読み込みを担当するオブジェクトです。 (継承元 Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
クラス ローダーは、クラスの読み込みを担当するオブジェクトです。 (継承元 Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
クラス ローダーは、クラスの読み込みを担当するオブジェクトです。 (継承元 Object) |
拡張メソッド
JavaCast<TResult>(IJavaObject) |
Android ランタイムチェック型変換を実行します。 |
JavaCast<TResult>(IJavaObject) |
クラス ローダーは、クラスの読み込みを担当するオブジェクトです。 |
GetJniTypeName(IJavaPeerable) |
クラス ローダーは、クラスの読み込みを担当するオブジェクトです。 |