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

クラスPermission

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

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オブジェクトと似ています。 サブクラスは、一度作成されたアクセス権の状態を変更できるメソッドを提供することはできません。

導入されたバージョン:
1.2
関連項目:
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    指定された名前でアクセス権を構築します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    void
    アクセス権のガード・インタフェースを実装します。
    abstract boolean
    2つのPermissionオブジェクトが等しいかどうかを判定します。
    abstract String
    アクションをStringで返します。
    final String
    Permissionの名前を返します。
    abstract int
    Permissionオブジェクトのハッシュ・コード値を返します。
    abstract boolean
    implies(Permission permission)
    このオブジェクトのアクションによって、指定されたアクセス権のアクションが包含されるかどうかを判定します。
    指定されたPermissionオブジェクトの空のPermissionCollectionを返します。ただし、定義済みのものがない場合はnullを返します。
    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をスローします。
      定義:
      checkGuard、インタフェースGuard
      パラメータ:
      object - ガードのあるオブジェクト(現在は無視)。
      例外:
      SecurityException - セキュリティ・マネージャが存在し、セキュリティ・マネージャのcheckPermissionメソッドがアクセスを許可しない場合。
      関連項目:
    • 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メソッドを使ってください。

      オーバーライド:
      equals、クラスObject
      パラメータ:
      obj - このオブジェクトと等しいかどうかが判定されるオブジェクト。
      戻り値:
      2つのPermissionオブジェクトが等しい場合はtrue
      関連項目:
    • hashCode

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

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

      • 同じPermissionオブジェクトに対してJavaアプリケーションの実行時に複数回呼び出すたびに、hashCodeメソッドは一貫して同じ整数を返さなければならない。 ただし、この整数は同じアプリケーションの実行ごとに同じである必要はありません。
      • equalsメソッドに基づいて2つのPermissionオブジェクトが等しい場合は、2つのPermissionオブジェクトでそれぞれhashCodeメソッドを呼び出したとき、結果として同じ整数が生成されなければなりません。

      オーバーライド:
      hashCode、クラスObject
      戻り値:
      このオブジェクトのハッシュ・コード値。
      関連項目:
    • getName

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

      public abstract String getActions()
      アクションをStringで返します。 これは抽象メソッドなので、必要性が生じるまでサブクラスは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")'というフォーマットで指定します。アクション・リストがnullまたは空の場合は、'("ClassName" "name")'と指定します。
      オーバーライド:
      toString、クラスObject
      戻り値:
      このPermissionについての情報。