- java.lang.Object
-
- java.security.PermissionCollection
-
- 实现的所有接口
-
Serializable
- 已知直接子类:
-
Permissions
public abstract class PermissionCollection extends Object implements Serializable
表示Permission对象集合的抽象类。使用PermissionCollection,您可以:
- 使用
add
方法向集合添加权限。 - 使用
implies
方法检查集合中是否隐含了特定权限。 - 使用
elements
方法枚举所有权限。
当需要将多个相同类型的Permission对象组合在一起时,应首先调用该特定类型的Permission对象上的
newPermissionCollection
方法。 默认行为(来自Permission类)只是返回null。 类Permission的子类如果需要将其权限存储在特定的PermissionCollection对象中,则会覆盖该方法,以便在调用PermissionCollection.implies
方法时提供正确的语义。 如果返回非null值,则必须使用该PermissionCollection。 如果返回null,则newPermissionCollection
的调用者可以自由地在他们选择的任何PermissionCollection中存储给定类型的权限(一个使用Hashtable,一个使用Vector等)。Permission.newPermissionCollection
方法返回的PermissionCollection是一个同类集合,它只存储给定Permission类型的Permission对象。 PermissionCollection也可以是异构的。 例如,Permissions是一个PermissionCollection子类,表示PermissionCollections的集合。 也就是说,它的成员都是一个同类的PermissionCollection。 例如,Permissions对象可能具有所有FilePermission对象的FilePermissionCollection,所有SocketPermission对象的SocketPermissionCollection,依此类推。 它的add
方法为相应的集合添加了权限。只要将权限添加到异构PermissionCollection(如权限),并且PermissionCollection尚未包含指定权限类型的PermissionCollection,PermissionCollection就应该在权限的类上调用
newPermissionCollection
方法,以查看它是否需要特殊的PermissionCollection。 如果newPermissionCollection
返回null,则PermissionCollection可以自由地将权限存储在它所需的任何类型的PermissionCollection中(一个使用Hashtable,一个使用Vector等)。 例如,Permissions对象使用默认的PermissionCollection实现,该实现将权限对象存储在Hashtable中。PermissionCollection的子类实现应该假设它们可以从多个线程同时调用,因此应该正确同步。 此外,通过
elements
方法返回的枚举不是快速失败的 。 枚举该集合时,不应对集合进行修改。- 从以下版本开始:
- 1.2
- 另请参见:
-
Permission
,Permissions
, Serialized Form
-
-
构造方法摘要
构造方法 构造器 描述 PermissionCollection()
-
方法摘要
所有方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 abstract void
add(Permission permission)
将权限对象添加到当前权限对象集合。abstract Enumeration<Permission>
elements()
返回集合中所有Permission对象的枚举。Stream<Permission>
elementsAsStream()
返回集合中所有Permission对象的流。abstract boolean
implies(Permission permission)
检查此PermissionCollection中保存的Permission对象集合是否隐含指定的权限。boolean
isReadOnly()
如果此PermissionCollection对象标记为readonly,则返回true。void
setReadOnly()
将此PermissionCollection对象标记为“只读”。String
toString()
返回描述此PermissionCollection对象的字符串,提供有关其包含的所有权限的信息。
-
-
-
方法详细信息
-
add
public abstract void add(Permission permission)
将权限对象添加到当前权限对象集合。- 参数
-
permission
- 要添加的Permission对象。 - 异常
-
SecurityException
- - 如果此PermissionCollection对象已标记为只读 -
IllegalArgumentException
- 如果此PermissionCollection对象是同类集合且权限类型不正确。
-
implies
public abstract boolean implies(Permission permission)
检查此PermissionCollection中保存的Permission对象集合是否隐含指定的权限。- 参数
-
permission
- 要比较的Permission对象。 - 结果
- 如果集合中的权限隐含“权限”,则为true,否则为false。
-
elements
public abstract Enumeration<Permission> elements()
返回集合中所有Permission对象的枚举。- 结果
- 所有权限的枚举。
- 另请参见:
-
elementsAsStream()
-
elementsAsStream
public Stream<Permission> elementsAsStream()
返回集合中所有Permission对象的流。在执行终端流操作期间,不应修改该集合(请参阅
add(java.security.Permission)
)。 否则,终端流操作的结果是未定义的。- 实现要求:
-
默认实现创建一个流,其源是从调用
elements()
返回的枚举 派生的 。 - 结果
- 所有权限的流。
- 从以下版本开始:
- 9
-
setReadOnly
public void setReadOnly()
将此PermissionCollection对象标记为“只读”。 将PermissionCollection对象标记为只读后,不能使用add
添加新的Permission对象。
-
isReadOnly
public boolean isReadOnly()
如果此PermissionCollection对象标记为readonly,则返回true。 如果是只读,则不能使用add
添加新的Permission对象。默认情况下,该对象不是只读的。 可以通过调用
setReadOnly
将其设置为只读。- 结果
- 如果此PermissionCollection对象标记为只读,则返回true,否则返回false。
-
toString
public String toString()
返回描述此PermissionCollection对象的字符串,提供有关其包含的所有权限的信息。 格式为:super.toString() ( // enumerate all the Permission // objects and call toString() on them, // one per line.. )
super.toString
是对该对象的超类(即Object)的toString
方法的调用。 结果是此PermissionCollection的类型名称后跟此对象的哈希码,从而使客户端能够区分不同的PermissionCollections对象,即使它们包含相同的权限。
-
-