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

クラスPermissionCollection

java.lang.Object
java.security.PermissionCollection
すべての実装されたインタフェース:
Serializable
直系の既知のサブクラス:
Permissions

public abstract class PermissionCollection
extends Object
implements Serializable
Permissionオブジェクトのコレクションを表す抽象クラスです。

PermissionCollectionを使うと、次の処理を行えます。

  • addメソッドを使って、コレクションにアクセス権を追加する。
  • impliesメソッドを使って、特定のアクセス権がコレクションに含まれているかどうかを調べる。
  • elementsメソッドを使って、すべてのアクセス権を列挙する。

同じ型の複数のPermissionオブジェクトをグループ化するには、まずその特定の型に対してnewPermissionCollectionメソッドを呼び出す必要があります。 Permissionクラスの場合、このメソッドのデフォルト動作は単純にnullを返すというものです。 PermissionCollection.impliesメソッドの呼出し時に正しいセマンティックスを提供できるように特定のPermissionCollectionオブジェクト内にアクセス権を格納する必要がある場合には、Permissionクラスのサブクラスがそのメソッドをオーバーライドします。 このメソッドからnull以外の値が返された場合、そのPermissionCollectionを使用する必要があります。 nullが返された場合、newPermissionCollectionの呼出し元は、指定された種類のアクセス権を、任意のPermissionCollection (Hashtableを使用するもの、Vectorを使用するものなど)に自由に格納できます。

Permission.newPermissionCollectionメソッドが返すPermissionCollectionは同種コレクションであり、指定された種類のアクセス権のPermissionオブジェクトだけを格納します。 PermissionCollectionは異種コレクションでもあります。 たとえばPermissionsは、PermissionCollectionsのコレクションを表すPermissionCollectionサブクラスです。 つまりそのメンバーは、それぞれが同種のPermissionCollectionです。 たとえばPermissionsオブジェクトは、すべてのFilePermissionオブジェクトに対してはFilePermissionCollection、すべてのSocketPermissionオブジェクトに対してはSocketPermissionCollectionなどといった対応でコレクションを持ちます。 そのaddメソッドはアクセス権を適切なコレクションに追加します。

Permissionsなどの異種のPermissionCollectionにアクセス権を追加する際、指定されたアクセス権に対するPermissionCollectionがそのPermissionCollection内に存在しなかった場合、そのPermissionCollectionは、そのアクセス権のクラス上でnewPermissionCollectionメソッドを呼び出し、それが特別なPermissionCollectionを必要とするかどうかを確認する必要があります。 newPermissionCollectionからnullが返された場合、そのPermissionCollectionは任意の種類のPermissionCollection (Hashtableを使用するもの、Vectorを使用するものなど)にそのアクセス権を格納できます。 たとえば、Permissionsオブジェクトは、アクセス権オブジェクトをHashtableに格納する、デフォルトのPermissionCollection実装を使用します。

PermissionCollectionのサブクラス実装は、複数スレッドから同時に呼び出されることを想定しなければならず、そのため、適切に同期を取る必要があります。 それだけでなく、elementsメソッドで返されるEnumerationsはフェイルファストではありません。 コレクションの列挙中に、コレクションへ変更を加えてはいけません。

導入されたバージョン:
1.2
関連項目:
Permission, Permissions, 直列化された形式
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ 説明
    PermissionCollection()  
  • メソッドのサマリー

    修飾子と型 メソッド 説明
    abstract void add​(Permission permission)
    アクセス権オブジェクトの現在のコレクションにアクセス権オブジェクトを追加します。
    abstract Enumeration<Permission> elements()
    コレクション内のすべてのPermissionオブジェクトの列挙を返します。
    Stream<Permission> elementsAsStream()
    コレクション内のすべてのPermissionオブジェクトのストリームを返します。
    abstract boolean implies​(Permission permission)
    指定されたアクセス権が、このPermissionCollectionで保持されるPermissionオブジェクトのコレクションによって包含されるかどうかを判定します。
    boolean isReadOnly()
    PermissionCollectionオブジェクトが読取り専用としてマークされている場合にtrueを返します。
    void setReadOnly()
    PermissionCollectionオブジェクトを「読取り専用」としてマークします。
    String toString()
    PermissionCollectionオブジェクトを記述する文字列を返し、オブジェクトが保持するすべてのアクセス権についての情報を提供します。

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • コンストラクタの詳細

    • PermissionCollection

      public PermissionCollection()
  • メソッドの詳細

    • add

      public abstract void add​(Permission permission)
      アクセス権オブジェクトの現在のコレクションにアクセス権オブジェクトを追加します。
      パラメータ:
      permission - 追加されるPermissionオブジェクト。
      例外:
      SecurityException - このPermissionCollectionオブジェクトが読取り専用にマークされている場合
      IllegalArgumentException - このPermissionCollectionオブジェクトが同種のコレクションで、権限が正しいタイプでない場合。
    • implies

      public abstract boolean implies​(Permission permission)
      指定されたアクセス権が、このPermissionCollectionで保持されるPermissionオブジェクトのコレクションによって包含されるかどうかを判定します。
      パラメータ:
      permission - 比較対象のPermissionオブジェクト。
      戻り値:
      アクセス権がコレクション内のアクセス権に包含される場合はtrue、そうでない場合はfalse。
    • elements

      public abstract Enumeration<Permission> elements()
      コレクション内のすべてのPermissionオブジェクトの列挙を返します。
      戻り値:
      すべてのPermissionsの列挙。
      関連項目:
      elementsAsStream()
    • elementsAsStream

      public Stream<Permission> elementsAsStream()
      コレクション内のすべてのPermissionオブジェクトのストリームを返します。

      コレクションは、ターミナル・ストリーム操作の実行中に変更されるべきではありません((add(java.security.Permission)を参照してください))。 そうしない場合、ストリーム終端操作の結果は保証されません。

      実装要件:
      デフォルトの実装では、ソースがelements()の呼び出しから返された列挙型から派生したストリームを作成します。
      戻り値:
      すべてのパーミッションのストリーム。
      導入されたバージョン:
      9
    • setReadOnly

      public void setReadOnly()
      PermissionCollectionオブジェクトを「読取り専用」としてマークします。 PermissionCollectionオブジェクトを読取り専用としてマークすると、新規PermissionオブジェクトをaddでPermissionCollectionに追加することはできません。
    • isReadOnly

      public boolean isReadOnly()
      PermissionCollectionオブジェクトが読取り専用としてマークされている場合にtrueを返します。 読取り専用の場合、新規Permissionオブジェクトをaddで追加することはできません。

      デフォルトでは、オブジェクトは読取り専用ではありません setReadOnlyを呼び出すことによって読取り専用に設定できます。

      戻り値:
      このPermissionCollectionオブジェクトが読取り専用としてマークされている場合はtrue、そうでない場合はfalse。
    • toString

      public String toString()
      PermissionCollectionオブジェクトを記述する文字列を返し、オブジェクトが保持するすべてのアクセス権についての情報を提供します。 書式は次のとおりです。
       super.toString() (
         // enumerate all the Permission
         // objects and call toString() on them,
         // one per line..
       )
      super.toStringは、このオブジェクトのスーパー・クラス(つまりObject)のtoStringメソッドの呼出しです。 結果として返されるのは、このPermissionCollectionの種類名のあとにこのオブジェクトのハッシュ・コードが続く文字列なので、複数のPermissionCollectionsオブジェクトが同じアクセス権を保持する場合でも、クライアントは各オブジェクトを区別できます。
      オーバーライド:
      toString 、クラス:  Object
      戻り値:
      PermissionCollectionオブジェクトについての情報(上記を参照)。