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, 2013, Oracle and/or its affiliates. All rights reserved.