com.docomostar.lang
クラス ByteArrayClassLoader

Object
  上位を拡張 com.docomostar.lang.ByteArrayClassLoader

public final class ByteArrayClassLoader
extends Object

バイト配列変数に格納された Jar 形式のバイト列から動的にクラスをロードしてクラスオブジェクトを生成する手段を提供します。

CLDC にはクラスローダが存在しないため、 クラスパスに新たなパスを追加する手段を提供することで、 動的なクラスのロードを実現しています。 そのため、以下の制約があります。

現在の実装では、このクラスでは importJar(byte[], int, int) によるクラスパス設定機能のみが提供されています。 実際にクラスを利用するには、クラスパスを設定した後に Class.forName(String) を呼び出してクラスをロードしてください。

パーミッションとしてクラスローダ機能の利用が許可されているトラステッド Star アプリだけがこのクラスローダを使用可能です。

導入されたバージョン:
Star-1.0

メソッドの概要
static ByteArrayClassLoader getInstance()
           このクラスローダインスタンスを返します。
 void importJar(byte[] b, int offset, int length)
           Jar 形式のバイト列をバイト配列変数からヒープ上で新規に確保された領域へコピーし、 classpath にコピー先のバイト列の場所を追加します。
 
クラス Object から継承されたメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

メソッドの詳細

getInstance

public static ByteArrayClassLoader getInstance()

このクラスローダインスタンスを返します。 常に同一のインスタンスを返します。

パーミッションとしてクラスローダ機能の利用が許可されていない場合には、 このメソッドを呼び出した時点でセキュリティ違反として Star アプリが強制終了されます。

戻り値:
このクラスローダのインスタンスを返します。

importJar

public void importJar(byte[] b,
                      int offset,
                      int length)
               throws JarFormatException

Jar 形式のバイト列をバイト配列変数からヒープ上で新規に確保された領域へコピーし、 classpath にコピー先のバイト列の場所を追加します。
まだ一度もこのメソッドを呼び出していない状態では、 classpath には、システムクラス群や、 この Star アプリを構成するクラス群の場所のみが設定されています。

このメソッドは以下の処理を順次行います。

このメソッドの実行後にコピー元のバイト配列変数の値を変更した場合でも、 Class.forName(String) によってロードされるクラスの内容は影響を受けません。

このメソッドが複数回実行された場合は、 その都度、新規領域の確保、 バイト列の新規領域へのコピー、および classpath への場所の追加が行われます。
Class.forName(String) によるクラスロード時には、classpath の先頭から順に、 ロード対象クラスが検索されます。

コピー対象範囲のバイト列が Jar 形式に違反している場合には、 このメソッド実行時または Class.forName(String) 実行時に例外が発生します。

パラメータ:
b - コピー元のバイト配列変数を指定します。
offset - コピー元のバイト配列変数のコピー開始位置を指定します。
length - コピーするバイト列の長さを指定します。
例外:
NullPointerException -
引数 b が null の場合に発生します。
IndexOutOfBoundsException -
引数 offset または引数 length のどちらかが負の場合、または引数 offset + 引数 length が引数 b.length よりも大きい場合に発生します。
JarFormatException -
コピー対象範囲のバイト列が Jar 形式に違反している場合(コピーするバイト列の長さが 0 の場合を含む)に発生します。


NTT DOCOMO,INC.

本製品または文書は著作権法により保護されており、その使用、複製、再頒布および逆コンパイルを制限するライセンスのもとにおいて頒布されます。NTTドコモ(その他に許諾者がある場合は当該許諾者も含めて)の書面による事前の許可なく、本製品および関連する文書のいかなる部分も、いかなる方法によっても複製することが禁じられます。フォントを含む第三者のソフトウェアは、著作権法により保護されており、その提供者からライセンスを受けているものです。

Sun、Sun Microsystems、Java、J2MEおよびJ2SEは、米国およびその他の国における米国 Sun Microsystems,Inc.の商標または登録商標です。サンのロゴマークは、米国 Sun Microsystems, Inc.の登録商標です。

FeliCaは、ソニー株式会社が開発した非接触ICカードの技術方式です。FeliCaは、ソニー株式会社の登録商標です。

「iモード」、「iアプリ/アイアプリ」、「i-αppli」ロゴ、「DoJa」はNTTドコモの商標または登録商標です。

その他記載された会社名、製品名などは該当する各社の商標または登録商標です。