public final class UnresolvedPermission extends Permission implements Serializable
Java実行時のポリシー(さまざまな主体からコードで利用できるアクセス権を指定する)は、Policyオブジェクトによって表現されます。 Policyが初期化または再表示されるたびに、Policyによって許可されるすべてのアクセス権に対して適切なクラスのPermissionオブジェクトが作成されます。
ポリシーの構成によって参照されるアクセス権クラス・タイプの多くは、ローカルに存在します(つまり、CLASSPATH上に置かれている)。 このようなアクセス権のオブジェクトは、Policyの初期化時にインスタンスを生成できます。 たとえば、FilePermissionクラスはCLASSPATHで見つかるので、いつでもjava.io.FilePermissionのインスタンスを生成できます。
ほかのアクセス権クラスは、Policyの初期化時にはまだ存在しない場合もあります。 たとえば、参照されたアクセス権クラスは、あとにロードされるJARファイル内にある可能性があります。 そのような各クラスでは、UnresolvedPermissionのインスタンスが生成されます。 このため、UnresolvedPermissionは基本的に、アクセス権についての情報を保持する「プレースホルダー」です。
その後、以前解決されなかったがその後クラスがロードされた型のアクセス権に対し、AccessController.checkPermissionがコード内から呼び出されると、その型の未解決のアクセス権が「解決され」ます。 つまり、そのような個々のUnresolvedPermissionごとに、UnresolvedPermission内の情報に基づいて適切なクラス型の新しいオブジェクトが生成されます。
新しいクラスをインスタンス化するために、UnresolvedPermissionは、その新しいクラスが引数なしコンストラクタ、1つの引数をとるコンストラクタ、2つの引数をとるコンストラクタの、いずれかまたはそのすべてを提供するものと仮定します。 引数なしコンストラクタは、名前とアクションを持たないアクセス権をインスタンス化する場合に使用されます。 また、1つの引数をとるコンストラクタはString
型の名前を入力として受け取るものと仮定され、2つの引数をとるコンストラクタはString
型の名前とString
型のアクションを入力として受け取るものと仮定されます。 UnresolvedPermissionは、名前またはアクションあるいはその両方にnull
を指定してコンストラクタを呼び出すこともあります。 適切なアクセス権コンストラクタが見つからない場合、UnresolvedPermissionは無視され、その関連アクセス権が実行コードに対して許可されません。
新しく作成されたアクセス権オブジェクトがUnresolvedPermissionに置き換わり、そのUnresolvedPermissionは削除されます。
なお、特定のUnresolvedPermission
のgetName
メソッドから返される値は、解決されなかった実際のアクセス権の「型(type
)」(クラス名)である点に注意してください。
Permission
, Permissions
, PermissionCollection
, Policy
, 直列化された形式コンストラクタ | 説明 |
---|---|
UnresolvedPermission(String type, String name, String actions, Certificate[] certs) |
あとで必要になるアクセス権情報を保持する新しいUnresolvedPermissionを作成して、アクセス権が解決されるときに、指定されたクラスのPermissionを実際に作成します。
|
修飾子と型 | メソッド | 説明 |
---|---|---|
boolean |
equals(Object obj) |
2つのUnresolvedPermissionオブジェクトが等しいかどうかを判定します。
|
String |
getActions() |
アクションの正規の文字列表現を返します。この文字列表現は、現在は空の文字列""です。これは、UnresolvedPermissionに対応するアクションがないためです。
|
String |
getUnresolvedActions() |
解決されていない実際のアクセス権のアクションを取得します。
|
Certificate[] |
getUnresolvedCerts() |
解決されていない実際のアクセス権に対する署名者の証明書(それをサポートする連鎖は含まない)を取得します。
|
String |
getUnresolvedName() |
解決されていない実際のアクセス権のターゲット名を取得します。
|
String |
getUnresolvedType() |
解決されていない実際のアクセス権の型(クラス名)を取得します。
|
int |
hashCode() |
このオブジェクトのハッシュ・コード値を返します。
|
boolean |
implies(Permission p) |
未解決のアクセス権に対して常にfalseを返します。
|
PermissionCollection |
newPermissionCollection() |
UnresolvedPermissionオブジェクトを格納するための新しいPermissionCollectionオブジェクトを返します。
|
String |
toString() |
このUnresolvedPermissionを記述する文字列を返します。
|
checkGuard, getName
public UnresolvedPermission(String type, String name, String actions, Certificate[] certs)
type
- この解決されていないアクセス権が解決されたときに作成されるPermissionクラスのクラス名。name
- アクセス権の名前。actions
- アクセス権のアクション。certs
- アクセス権のクラスの署名で使われた証明書。 これは証明書チェーンのリストであり、それぞれの連鎖は署名者の証明書およびそれをサポートする証明書チェーン(オプション)から構成される。 各連鎖は下位から上位の順に並べられる。つまり、署名者の証明書が最初で、(ルートの)証明書発行局が最後になる。 署名者の証明書は配列からコピーされる。 その後に配列を変更しても、このUnresolvedPermissionには影響しません。 public boolean implies(Permission p)
implies
、クラスPermission
p
- チェック対象のアクセス権。public boolean equals(Object obj)
証明書が等しいかどうかを判定する際にこのメソッドが比較するのは、実際の署名者の証明書だけです。 それをサポートする証明書チェーンは、このメソッドでは考慮されません。
equals
、クラスPermission
obj
- このオブジェクトと等しいかどうかが判定されるオブジェクト。Object.hashCode()
, HashMap
public int hashCode()
hashCode
、クラスPermission
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
public String getActions()
getActions
、クラスPermission
public String getUnresolvedType()
public String getUnresolvedName()
null
public String getUnresolvedActions()
null
public Certificate[] getUnresolvedCerts()
public String toString()
toString
、クラスPermission
public PermissionCollection newPermissionCollection()
newPermissionCollection
、クラスPermission
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。