モジュール java.base
パッケージ 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
    関連項目:
    Permissions, PermissionCollection, 直列化された形式
    • コンストラクタのサマリー

      コンストラクタ 
      コンストラクタ 説明
      Permission​(String name)
      指定された名前でアクセス権を構築します。
    • コンストラクタの詳細

      • Permission

        public Permission​(String name)
        指定された名前でアクセス権を構築します。
        パラメータ:
        name - 作成するPermissionオブジェクトの名前。
    • メソッドの詳細

      • checkGuard

        public void checkGuard​(Object object)
                        throws SecurityException
        アクセス権のガード・インタフェースを実装します。 SecurityManager.checkPermissionメソッドが呼び出され、このアクセス権オブジェクトを検査対象として渡します。 アクセスが許可されると、何も行わずに復帰します。 そうでない場合は、SecurityExceptionをスローします。
        定義:
        checkGuard、インタフェースGuard
        パラメータ:
        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メソッドを使ってください。

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

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

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

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

        オーバーライド:
        hashCode、クラスObject
        戻り値:
        このオブジェクトのハッシュ・コード値。
        関連項目:
        Object.equals(java.lang.Object), System.identityHashCode(java.lang.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についての情報。