public abstract class PermissionCollection extends Object implements Serializable
使用PermissionCollection,您可以:
add
方法添加收集的add
。 implies
方法检查收集中是否暗示了特定implies
。 elements
方法。 当希望将许多相同类型的Permission对象组合在一起时,应首先调用该特定类型的Permission对象上的newPermissionCollection
方法。 默认行为(从Permission类)只是返回null。 如果需要将权限存储在特定的PermissionCollection对象中,以便在调用PermissionCollection.implies
方法时提供正确的语义,类Permission的子类将重写该方法。 如果返回非空值,则必须使用PermissionCollection。 如果返回null,那么newPermissionCollection
的调用者可以自由地在他们选择的任何PermissionCollection中存储给定类型的权限(一个使用Hashtable,一个使用Vector等)。
Permission.newPermissionCollection
方法返回的Permission.newPermissionCollection
是一个同构的集合,它仅存储给定权限类型的权限对象。 PermissionCollection也可能是异构的。 例如,Permissions是PermissionCollection子类,它表示PermissionCollections的集合。 也就是说,它的成员都是均匀的PermissionCollection。 例如,Permissions对象可能具有所有FilePermission对象的FilePermissionCollection,所有SocketPermission对象的SocketPermissionCollection等等。 它的add
方法添加了适当的集合的权限。
只要将一个权限添加到不同种类的PermissionCollection(如Permissions),并且PermissionCollection尚未包含指定权限的类型的PermissionCollection中,PermissionCollection都应该调用newPermissionCollection
上允许的类方法,看它是否需要特殊的PermissionCollection。 如果newPermissionCollection
返回null,PermissionCollection可以将权限存储在任何所需的PermissionCollection类型中(一个使用Hashtable,一个使用Vector等)。 例如,Permissions对象使用在Hashtable中存储权限对象的默认PermissionCollection实现。
PermissionCollection的子类实现应该假定它们可以从多个线程同时调用,因此应该被正确同步。 此外,通过elements
方法返回的elements
不是故障快速的 。 在枚举集合时不应执行对集合的修改。
Permission
, Permissions
, Serialized Form
Constructor and Description |
---|
PermissionCollection() |
Modifier and Type | Method and Description |
---|---|
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
- 要添加的权限对象。
SecurityException
- - 如果此PermissionCollection对象已被标记为只读
IllegalArgumentException
- - 如果此PermissionCollection对象是均匀集合,并且该权限不是正确的类型。
public abstract boolean implies(Permission permission)
permission
- 要比较的权限对象。
public abstract Enumeration<Permission> elements()
public void setReadOnly()
add
添加新的Permission对象。
public boolean isReadOnly()
add
添加新的权限对象。
默认情况下,该对象不是只读的。 它可以通过调用setReadOnly
设置为只读。
public String toString()
super.toString() (
// enumerate all the Permission
// objects and call toString() on them,
// one per line..
)
super.toString
是对一个呼叫toString
此对象的超类的方法,该方法是对象。
结果是这个PermissionCollection的类型名称后跟这个对象的哈希码,从而使客户端区分不同的PermissionCollections对象,即使它们包含相同的权限。