- すべての実装されたインタフェース:
- Serializable
- 直系の既知のサブクラス:
- Permissions
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
- 関連項目:
- 
コンストラクタのサマリーコンストラクタ
- 
メソッドのサマリー修飾子と型メソッド説明abstract voidadd(Permission permission) アクセス権オブジェクトの現在のコレクションにアクセス権オブジェクトを追加します。abstract Enumeration<Permission>elements()コレクション内のすべてのPermissionオブジェクトの列挙を返します。コレクション内のすべてのPermissionオブジェクトのストリームを返します。abstract booleanimplies(Permission permission) 指定されたアクセス権が、このPermissionCollectionで保持されるPermissionオブジェクトのコレクションによって包含されるかどうかを判定します。booleanPermissionCollectionオブジェクトが読取り専用としてマークされている場合にtrueを返します。voidPermissionCollectionオブジェクトを「読取り専用」としてマークします。toString()PermissionCollectionオブジェクトを記述する文字列を返し、オブジェクトが保持するすべてのアクセス権についての情報を提供します。
- 
コンストラクタの詳細- 
PermissionCollectionpublic PermissionCollection()サブクラスが呼び出すためのコンストラクタ。
 
- 
- 
メソッドの詳細- 
addpublic abstract void add(Permission permission) アクセス権オブジェクトの現在のコレクションにアクセス権オブジェクトを追加します。- パラメータ:
- permission- 追加されるPermissionオブジェクト。
- 例外:
- SecurityException- このPermissionCollectionオブジェクトが読取り専用にマークされている場合
- IllegalArgumentException- このPermissionCollectionオブジェクトが同種のコレクションで、権限が正しいタイプでない場合。
 
- 
impliespublic abstract boolean implies(Permission permission) 指定されたアクセス権が、このPermissionCollectionで保持されるPermissionオブジェクトのコレクションによって包含されるかどうかを判定します。- パラメータ:
- permission- 比較対象のPermissionオブジェクト。
- 戻り値:
- アクセス権がコレクション内のアクセス権に包含される場合はtrue、そうでない場合はfalse。
 
- 
elementspublic abstract Enumeration<Permission> elements()コレクション内のすべてのPermissionオブジェクトの列挙を返します。- 戻り値:
- すべてのPermissionsの列挙。
- 関連項目:
 
- 
elementsAsStreampublic Stream<Permission> elementsAsStream()コレクション内のすべてのPermissionオブジェクトのストリームを返します。コレクションは、ターミナル・ストリーム操作の実行中に変更されるべきではありません( add(java.security.Permission)を参照してください)。 そうしない場合、ストリーム終端操作の結果は保証されません。- 実装要件:
- デフォルトの実装では、ソースがelements()の呼び出しから返された列挙型から派生したストリームを作成します。
- 戻り値:
- すべてのパーミッションのストリーム。
- 導入されたバージョン:
- 9
 
- 
setReadOnlypublic void setReadOnly()PermissionCollectionオブジェクトを「読取り専用」としてマークします。 PermissionCollectionオブジェクトを読取り専用としてマークすると、新規PermissionオブジェクトをaddでPermissionCollectionに追加することはできません。
- 
isReadOnlypublic boolean isReadOnly()PermissionCollectionオブジェクトが読取り専用としてマークされている場合にtrueを返します。 読取り専用の場合、新規Permissionオブジェクトをaddで追加することはできません。デフォルトでは、オブジェクトは読取り専用ではありません。 setReadOnlyを呼び出すことによって読取り専用に設定できます。- 戻り値:
- このPermissionCollectionオブジェクトが読取り専用としてマークされている場合はtrue、そうでない場合はfalse。
 
- 
toStringpublic String toString()PermissionCollectionオブジェクトを記述する文字列を返し、オブジェクトが保持するすべてのアクセス権についての情報を提供します。 書式は次のとおりです。super.toString() ( // enumerate all the Permission // objects and call toString() on them, // one per line.. ) super.toStringは、このオブジェクトのスーパー・クラス(つまりObject)のtoStringメソッドの呼出しです。 結果として返されるのは、このPermissionCollectionの種類名のあとにこのオブジェクトのハッシュ・コードが続く文字列なので、複数のPermissionCollectionsオブジェクトが同じアクセス権を保持する場合でも、クライアントは各オブジェクトを区別できます。
 
-