public abstract class PermissionCollection extends Object implements Serializable
PermissionCollectionを使うと、次の処理を行えます。
add
メソッドを使って、コレクションにアクセス権を追加する。
implies
メソッドを使って、特定のアクセス権がコレクションに含まれているかどうかを調べる。
elements
メソッドを使って、すべてのアクセス権を列挙する。
同じ型の複数のPermissionオブジェクトをグループ化するには、まずその特定の型に対してnewPermissionCollection
メソッドを呼び出す必要があります。Permissionクラスの場合、このメソッドのデフォルト動作は単純にnullを返すというものです。PermissionCollection.implies
メソッドの呼出し時に正しいセマンティックスを提供できるように特定のPermissionCollectionオブジェクト内にアクセス権を格納する必要がある場合には、PermissionクラスのサブクラスがnewPermissionCollectionメソッドをオーバーライドします。このメソッドから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 (Hastableを使用するもの、Vectorを使用するものなど)にそのアクセス権を格納できます。たとえば、Permissionsオブジェクトは、アクセス権オブジェクトをHashtableに格納する、デフォルトのPermissionCollection実装を使用します。
PermissionCollectionのサブクラス実装は、複数スレッドから同時に呼び出されることを想定しなければならず、そのため、適切に同期を取る必要があります。それだけでなく、elements
メソッドで返されるEnumerationsはフェイルファストではありません。コレクションの列挙中に、コレクションへ変更を加えてはいけません。
Permission
, Permissions
, 直列化された形式コンストラクタと説明 |
---|
PermissionCollection() |
修飾子と型 | メソッドと説明 |
---|---|
abstract void |
add(Permission permission)
アクセス権オブジェクトの現在のコレクションにアクセス権オブジェクトを追加します。
|
abstract Enumeration<Permission> |
elements()
コレクション内のすべてのPermissionオブジェクトの列挙を返します。
|
abstract boolean |
implies(Permission permission)
指定されたアクセス権が、このPermissionCollectionで保持されるPermissionオブジェクトのコレクションによって包含されるかどうかを判定します。
|
boolean |
isReadOnly()
PermissionCollectionオブジェクトが読取り専用としてマークされている場合にtrueを返します。
|
void |
setReadOnly()
PermissionCollectionオブジェクトを「読取り専用」としてマークします。
|
String |
toString()
PermissionCollectionオブジェクトを記述する文字列を返し、オブジェクトが保持するすべてのアクセス権についての情報を提供します。
|
public abstract void add(Permission permission)
permission
- 追加されるPermissionオブジェクト。SecurityException
- - このPermissionCollectionオブジェクトが読取り専用としてマークされている場合IllegalArgumentException
- - このPermissionCollectionオブジェクトが同種コレクションであり、アクセス権が正しいタイプでない場合。public abstract boolean implies(Permission permission)
permission
- 比較対象のPermissionオブジェクト。public abstract Enumeration<Permission> elements()
public void setReadOnly()
add
でPermissionCollectionに追加することはできません。public boolean isReadOnly()
add
でPermissionCollectionに追加することはできません。
デフォルトでは、オブジェクトは読取り専用ではありません。setReadOnly
を呼び出すことによって読取り専用に設定できます。
public String toString()
super.toString() ( // enumerate all the Permission // objects and call toString() on them, // one per line.. )
super.toString
は、このオブジェクトのスーパー・クラス(つまりObject)のtoString
メソッドの呼出しです。結果として返されるのは、このPermissionCollectionの種類名のあとにこのオブジェクトのハッシュ・コードが続く文字列なので、複数のPermissionCollectionsオブジェクトが同じアクセス権を保持する場合でも、クライアントは各オブジェクトを区別できます。 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.