JavaTM Platform
Standard Ed. 6

java.security
クラス Permission

java.lang.Object
  上位を拡張 java.security.Permission
すべての実装されたインタフェース:
Serializable, Guard
直系の既知のサブクラス:
AllPermission, BasicPermission, FilePermission, MBeanPermission, PrivateCredentialPermission, ServicePermission, SocketPermission, UnresolvedPermission

public abstract class Permission
extends Object
implements Guard, Serializable

システムリソースへのアクセスを表現する abstract クラスです。すべてのアクセス権は、特定の Permission サブクラスのセマンティクスを定義するための抽象機能を持つほか、実装をサブクラスに依存する名前を持ちます。

ほとんどの Permission オブジェクトはまた、オブジェクトに許可されているアクションを通知するアクションリストを含みます。たとえば java.io.FilePermission オブジェクトでは、アクセス権の名前はファイルまたはディレクトリのパス名で、アクションリスト (読み込み、書き込みなど) は、指定されたファイル、またはディレクトリ内のファイルにどのアクションが許可されているかを指定します。アクションリストは、そうしたリストを必要としない java.lang.RuntimePermission などの Permission オブジェクトではオプションです。 ユーザーは、名前付きのアクセス権 (system.exit など) を持つ場合と持たない場合があります。

各サブクラスによって実装しなければならない重要なメソッドは、Permissions を比較する implies メソッドです。基本的に、「permission p1 は permission p2 を包含する」とは、permission p1 が許可された場合には permission p2 も当然許可されるということです。したがって、これは適性テストではなく、サブセットテストです。

Permission オブジェクトは、一度作成すると不変になるという点では String オブジェクトと似ています。サブクラスは、一度作成されたアクセス権の状態を変更できるメソッドを提供することはできません。

関連項目:
Permissions, PermissionCollection, 直列化された形式

コンストラクタの概要
Permission(String name)
          指定された名前でアクセス権を構築します。
 
メソッドの概要
 void checkGuard(Object object)
          アクセス権のガードインタフェースを実装します。
abstract  boolean equals(Object obj)
          2 つの Permission オブジェクトが等しいかどうかを判定します。
abstract  String getActions()
          アクションを String で返します。
 String getName()
          Permission の名前を返します。
abstract  int hashCode()
          Permission オブジェクトのハッシュコード値を返します。
abstract  boolean implies(Permission permission)
          このオブジェクトのアクションによって、指定されたアクセス権のアクションが包含されるかどうかを判定します。
 PermissionCollection newPermissionCollection()
          指定された Permission オブジェクトの空の PermissionCollection を返します。
 String toString()
          Permission を記述する文字列を返します。
 
クラス java.lang.Object から継承されたメソッド
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

コンストラクタの詳細

Permission

public Permission(String name)
指定された名前でアクセス権を構築します。

パラメータ:
name - 作成する Permission オブジェクトの名前
メソッドの詳細

checkGuard

public void checkGuard(Object object)
                throws SecurityException
アクセス権のガードインタフェースを実装します。SecurityManager.checkPermission メソッドが呼び出され、このアクセス権オブジェクトを検査対象として渡します。アクセスが許可されると、何も行わずに復帰します。そうでない場合は、SecurityException をスローします。

定義:
インタフェース Guard 内の checkGuard
パラメータ:
object - ガードのあるオブジェクト (現在は無視)
例外:
SecurityException - セキュリティーマネージャーが存在し、セキュリティーマネージャーの checkPermission メソッドがアクセスを許可しない場合
関連項目:
Guard, GuardedObject, SecurityManager.checkPermission(java.security.Permission)

implies

public abstract boolean implies(Permission permission)
このオブジェクトのアクションによって、指定されたアクセス権のアクションが包含されるかどうかを判定します。  

Permission オブジェクトにセマンティクスを課すことができるのは Permission のサブクラスだけなので、このメソッドはそのようなサブクラスによって実装されなければなりません。

implies メソッドは、AccessController によって使用されます。現在実行中のコンテキストで有効であることがわかっているほかのアクセス権によって、要求されたアクセス権が包含されているかどうかを、このメソッドを使って調べます。

パラメータ:
permission - チェック対象のアクセス権
戻り値:
指定されたアクセス権がこのオブジェクトに含まれる場合は true、 そうでない場合は false

equals

public abstract boolean equals(Object obj)
2 つの Permission オブジェクトが等しいかどうかを判定します。  

アクセス制御を決定するのに equals メソッドは使わないでください。代わりに implies メソッドを使ってください。

オーバーライド:
クラス Object 内の equals
パラメータ:
obj - このオブジェクトと等しいかどうかを判定するオブジェクト
戻り値:
2 つの Permission オブジェクトが等しい場合は true
関連項目:
Object.hashCode(), Hashtable

hashCode

public abstract int hashCode()
Permission オブジェクトのハッシュコード値を返します。  

次に、Permission オブジェクトの必要な hashCode 動作を示します。

オーバーライド:
クラス Object 内の hashCode
戻り値:
このオブジェクトのハッシュコード値
関連項目:
Object.equals(java.lang.Object), Hashtable

getName

public final String getName()
Permission の名前を返します。たとえば java.io.FilePermission の場合は、名前はパス名になります。

戻り値:
Permission の名前

getActions

public abstract String getActions()
アクションを String で返します。これは abstract メソッドなので、必要性が生じるまでサブクラスは String 表現の作成を遅延させることができます。サブクラスは常に、正規形式と見なす形式でアクションを返さなければなりません。たとえば、2 つの FilePermission オブジェクトは以下の方法で作成されます。
perm1 = new FilePermission(p1,"read,write");
perm2 = new FilePermission(p2,"write,read"); 
 
getActions メソッドが呼び出されると、どちらも "read,write" を返します。

戻り値:
Permission のアクション

newPermissionCollection

public PermissionCollection newPermissionCollection()
指定された Permission オブジェクトの空の PermissionCollection を返します。 ただし、定義済みのものがない場合は null を返します。PermissionCollection.implies メソッドが呼び出されたときに、正しいセマンティクスを提供するために、特定の PermissionCollection オブジェクトにそのアクセス権を格納する必要がある場合、Permission クラスのサブクラスはこのメソッドをオーバーライドします。null が返された場合、このメソッドの呼び出し側はこの種類のアクセス権を、選択するどの PermissionCollection に対しても自由に格納できます (Hashtable を使うもの、Vector を使うものなど)。

戻り値:
この型の Permission の新規 PermissionCollection オブジェクト。定義済みのものがない場合は null

toString

public String toString()
Permission を記述する文字列を返します。規約では、クラス名、アクセス権の名前、アクションを、'("ClassName" "name" "actions")' という形式で指定します。

オーバーライド:
クラス Object 内の toString
戻り値:
この Permission についての情報

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。