ClassLoader クラス

定義

クラス ローダーは、クラスの読み込みを担当するオブジェクトです。

[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
派生
属性

注釈

クラス ローダーは、クラスの読み込みを担当するオブジェクトです。 クラス 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&nbsp;= new NetworkClassLoader(host,&nbsp;port);
              Object main&nbsp;= loader.loadClass("Main", true).newInstance();
                  &nbsp;.&nbsp;.&nbsp;.

</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
                        &nbsp;.&nbsp;.&nbsp;.
                    }
                }

</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.ClassLoaderJava ドキュメント。

このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。

コンストラクター

ClassLoader()

メソッド#getSystemClassLoader() <tt>getSystemClassLoader()</tt>によって返された をClassLoader親クラス ローダーとして使用して、新しいクラス ローダーを作成します。

ClassLoader(ClassLoader)

指定した親クラス ローダーを使用して委任用に新しいクラス ローダーを作成します。

ClassLoader(IntPtr, JniHandleOwnership)

JNI オブジェクトのマネージド表現を作成するときに使用されるコンストラクター。ランタイムによって呼び出されます。

プロパティ

Class

この Objectのランタイム クラスを返します。

(継承元 Object)
Handle

基になる Android インスタンスへのハンドル。

(継承元 Object)
JniIdentityHashCode

クラス ローダーは、クラスの読み込みを担当するオブジェクトです。

(継承元 Object)
JniPeerMembers

クラス ローダーは、クラスの読み込みを担当するオブジェクトです。

Parent

委任用の親クラス ローダーを返します。

PeerReference

クラス ローダーは、クラスの読み込みを担当するオブジェクトです。

(継承元 Object)
SystemClassLoader

委任用のシステム クラス ローダーを返します。

ThresholdClass

この API は Mono for Android インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

ThresholdType

この API は Mono for Android インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

メソッド

ClearAssertionStatus()

このクラス ローダーの既定のアサーション状態を に設定し、クラス ローダーに false 関連付けられているパッケージの既定値またはクラス アサーションの状態設定を破棄します。

Clone()

このオブジェクトのコピーを作成して返します。

(継承元 Object)
DefineClass(Byte[], Int32, Int32)
古い.

バイト配列を クラス Classのインスタンスに変換します。

DefineClass(String, Byte[], Int32, Int32)

バイト配列を クラス Classのインスタンスに変換します。

DefineClass(String, Byte[], Int32, Int32, ProtectionDomain)

バイト配列を クラス Classのインスタンスに変換します。省略可能です ProtectionDomain

DefineClass(String, ByteBuffer, ProtectionDomain)

java.nio.ByteBuffer <tt>ByteBuffer</tt>省略可能ProtectionDomainな を使用して、 を クラスClassのインスタンスに変換します。

DefinePackage(String, String, String, String, String, String, String, URL)

この ClassLoaderの名前でパッケージを定義します。

Dispose()

クラス ローダーは、クラスの読み込みを担当するオブジェクトです。

(継承元 Object)
Dispose(Boolean)

クラス ローダーは、クラスの読み込みを担当するオブジェクトです。

(継承元 Object)
Equals(Object)

他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。

(継承元 Object)
FindClass(String)

指定したバイナリ名を持つ クラスを検索します。

FindLibrary(String)

ネイティブ ライブラリの絶対パス名を返します。

FindLoadedClass(String)

このローダーが Java 仮想マシンによって、そのバイナリ名を持つクラスの開始ローダーとして記録されている場合は、指定されたバイナリ名のクラスを返します。

FindResource(String)

指定した名前のリソースを検索します。

FindResources(String)

指定した名前を持つすべてのリソースを表す オブジェクトの列挙体 java.net.URL <tt>URL</tt> を返します。

FindSystemClass(String)

指定したバイナリ名を持つクラスを検索し、必要に応じて読み込みます。

GetHashCode()

オブジェクトのハッシュ コード値を返します。

(継承元 Object)
GetPackage(String)

Packageこのクラス ローダーまたはその先祖によって定義されている を返します。

GetPackages()

このクラス ローダーとその先祖によって定義されているすべての を Packages 返します。

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)

クラス ローダーは、クラスの読み込みを担当するオブジェクトです。

適用対象