- 所有已实现的接口:
-
Serializable
- 直接已知的子类:
-
Permissions
使用 PermissionCollection
,您可以:
- 使用
add
方法将权限添加到集合中。 - 使用
implies
方法检查集合中是否隐含特定权限。 - 使用
elements
方法枚举所有权限。
当希望将多个相同类型的 Permission
对象分组在一起时,应首先调用该特定类型的 Permission
对象上的 newPermissionCollection
方法。默认行为(来自 Permission
类)是简单地返回 null
。 Permission
类的子类会覆盖该方法,如果需要将其权限存储在特定的 PermissionCollection
对象中,以便在调用 PermissionCollection.implies
方法时提供正确的语义。如果返回非空值,则必须使用该 PermissionCollection
。如果返回 null
,则调用 newPermissionCollection
的调用者可以自由地将给定类型的权限存储在任何他们选择的 PermissionCollection
中(使用 Hashtable
的一个,使用 Vector
的一个等)。
Permission.newPermissionCollection
方法返回的集合是一个同质集合,仅存储给定权限类型的 Permission
对象。 PermissionCollection
也可以是异质的。例如,Permissions
是一个 PermissionCollection
子类,表示 PermissionCollection
对象的集合。也就是说,其成员每个都是同质的 PermissionCollection
。例如,一个 Permission
对象可能具有一个 FilePermissionCollection
,用于所有 FilePermission
对象,一个 SocketPermissionCollection
,用于所有 SocketPermission
对象,等等。其 add
方法将权限添加到适当的集合中。
每当将权限添加到异质的 PermissionCollection
(如 Permissions
)中,并且 PermissionCollection
尚未包含指定权限类型的 PermissionCollection
时,PermissionCollection
应调用权限类上的 newPermissionCollection
方法,以查看是否需要特殊的 PermissionCollection
。如果 newPermissionCollection
返回 null
,则 PermissionCollection
可以自由地将权限存储在任何类型的 PermissionCollection
中(使用 Hashtable
的一个,使用 Vector
的一个等)。例如,Permissions
对象使用一个默认的 PermissionCollection
实现,将权限对象存储在一个 Hashtable
中。
PermissionCollection
的子类实现应假定可能同时从多个线程调用它们,因此应适当同步。此外,通过 elements
方法返回的枚举不是 fail-fast。在枚举集合时不应执行对集合的修改。
- 自版本:
- 1.2
- 参见:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionabstract void
add
(Permission permission) 将权限对象添加到当前权限对象集合中。abstract Enumeration
<Permission> elements()
返回集合中所有权限对象的枚举。返回集合中所有权限对象的流。abstract boolean
implies
(Permission permission) 检查指定权限是否被此PermissionCollection
中保存的Permission
对象隐含。boolean
如果此PermissionCollection
对象标记为只读,则返回true
。void
将此PermissionCollection
对象标记为“只读”。toString()
返回描述此PermissionCollection
对象的字符串,提供有关其包含的所有权限的信息。
-
Constructor Details
-
PermissionCollection
public PermissionCollection()子类调用的构造函数。
-
-
Method Details
-
add
将权限对象添加到当前权限对象集合中。- 参数:
-
permission
- 要添加的权限对象。 - 抛出:
-
SecurityException
- 如果此PermissionCollection
对象已标记为只读 -
IllegalArgumentException
- 如果此PermissionCollection
对象是同质集合且权限类型不正确。
-
implies
检查指定权限是否被此PermissionCollection
中保存的Permission
对象隐含。- 参数:
-
permission
- 要比较的Permission
对象。 - 返回:
-
如果“permission”被集合中的权限隐含,则返回
true
,否则返回false
。
-
elements
返回集合中所有权限对象的枚举。- 返回:
- 所有权限的枚举。
- 参见:
-
elementsAsStream
返回集合中所有权限对象的流。在执行终端流操作期间,不应修改集合(请参阅
add(java.security.Permission)
)。否则,终端流操作的结果是未定义的。- 实现要求:
-
默认实现创建一个流,其源是从调用
elements()
返回的枚举派生的。 - 返回:
- 所有权限的流。
- 自版本:
- 9
-
setReadOnly
public void setReadOnly()将此PermissionCollection
对象标记为“只读”。将PermissionCollection
对象标记为只读后,将无法使用add
添加新的Permission
对象。 -
isReadOnly
public boolean isReadOnly()如果此PermissionCollection
对象标记为只读,则返回true
。如果它是只读的,则无法使用add
添加新的Permission
对象。默认情况下,对象不是只读的。可以通过调用
setReadOnly
将其设置为只读。- 返回:
-
如果此
PermissionCollection
对象标记为只读,则返回true
,否则返回false
。
-
toString
返回描述此PermissionCollection
对象的字符串,提供有关其包含的所有权限的信息。格式为:super.toString() ( // 枚举所有权限对象并对它们调用 toString(), // 每行一个.. )
super.toString
是调用此对象的超类的toString
方法,即Object
。结果是此集合的类型名称,后跟此对象的哈希码,从而使客户端能够区分不同的PermissionCollection
对象,即使它们包含相同的权限。
-