モジュール java.base
パッケージ java.security

クラスUnresolvedPermission

java.lang.Object
java.security.Permission
java.security.UnresolvedPermission
すべての実装されたインタフェース:
Serializable, Guard

public final class UnresolvedPermission extends Permission implements Serializable
UnresolvedPermissionクラスは、ポリシーの初期化時に"未解決"であった権限を保持するために使用されます。 解決されていないアクセス権とは、Policyの初期化時に実際のPermissionクラスがまだ存在していないアクセス権のことです(下記を参照)。

Java実行時のポリシー(さまざまな主体からコードで利用できるアクセス権を指定する)は、Policyオブジェクトによって表現されます。 Policyが初期化または再表示されるたびに、Policyによって許可されるすべてのアクセス権に対して適切なクラスのPermissionオブジェクトが作成されます。

ポリシーの構成によって参照されるアクセス権クラス・タイプの多くは、ローカルに存在します(つまり、CLASSPATH上に置かれている)。 このようなアクセス権のオブジェクトは、Policyの初期化時にインスタンスを生成できます。 たとえば、FilePermissionクラスはCLASSPATHで見つかるので、いつでもjava.io.FilePermissionのインスタンスを生成できます。

ほかのアクセス権クラスは、Policyの初期化時にはまだ存在しない場合もあります。 たとえば、参照されたアクセス権クラスは、あとにロードされるJARファイル内にある可能性があります。 そのような各クラスでは、UnresolvedPermissionのインスタンスが生成されます。 このため、UnresolvedPermissionは基本的に、アクセス権についての情報を保持する「プレースホルダー」です。

その後、コードが以前に未解決であったが、そのクラスがロードされてからそのタイプの権限でAccessController.checkPermission(java.security.Permission)をコールすると、そのタイプの以前に未解決の権限は"解決済"になります。 つまり、そのような個々のUnresolvedPermissionごとに、UnresolvedPermission内の情報に基づいて適切なクラス型の新しいオブジェクトが生成されます。

新しいクラスをインスタンス化するために、UnresolvedPermissionは、クラスがゼロ、1または2つの引数コンストラクタ(あるいはその両方)を提供していると想定します。 引数なしコンストラクタは、名前とアクションを持たないアクセス権をインスタンス化する場合に使用されます。 また、1つの引数をとるコンストラクタはString型の名前を入力として受け取るものと仮定され、2つの引数をとるコンストラクタはString型の名前とString型のアクションを入力として受け取るものと仮定されます。 UnresolvedPermissionは、nullの名前またはアクション(あるいはその両方)を持つコンストラクタを呼び出すことができます。 適切な権限コンストラクタが使用できない場合、UnresolvedPermissionは無視され、コードの実行に関連する権限は付与されません。

新しく作成された権限オブジェクトは、削除されたUnresolvedPermissionと置き換えられます。

なお、特定のUnresolvedPermissiongetNameメソッドから返される値は、解決されなかった実際のアクセス権の「型(type)」(クラス名)である点に注意してください。

導入されたバージョン:
1.2
関連項目: