JavaTM 2 Platform
Std. Ed. v1.3

java.security
クラス Permission

java.lang.Object
  |
  +--java.security.Permission
すべての実装インタフェース:
Guard, Serializable
直系の既知のサブクラス:
AllPermission, BasicPermission, FilePermission, SocketPermission, UnresolvedPermission

public abstract class Permission
extends Object
implements Guard, Serializable

システムリソースへのアクセスを表現する抽象クラスです。すべてのアクセス権は、特定の 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

hashCode

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

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

オーバーライド:
クラス Object 内の hashCode
戻り値:
このオブジェクトのハッシュコード値

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 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.