- java.lang.Object
-
- java.security.PermissionCollection
-
- All Implemented Interfaces:
-
Serializable
- 已知直接子类:
-
Permissions
public abstract class PermissionCollection extends Object implements Serializable
代表Permission对象集合的抽象类。使用PermissionCollection,您可以:
- 使用
add
方法添加收藏的权限。 - 使用
implies
方法检查收集中是否暗示了特定权限。 - 枚举所有权限,使用
elements
方法。
当希望将许多相同类型的Permission对象组合在一起时,应首先调用该特定类型的Permission对象上的
newPermissionCollection
方法。 默认行为(从Permission类)只是返回null。 如果PermissionsCollection对象需要存储其权限,以便在调用PermissionCollection.implies
方法时提供正确的语义,则类Permission的子类将重写该方法。 如果返回非空值,则必须使用PermissionCollection。 如果返回null,那么newPermissionCollection
的调用者可以自由地存储他们选择的任何PermissionCollection中的给定类型的权限(一个使用Hashtable,一个使用Vector等)。由
Permission.newPermissionCollection
方法返回的PermissionCollection是一个同构的集合,它仅存储给定权限类型的权限对象。 PermissionCollection也可能是异构的。 例如,Permissions是PermissionCollection子类,它表示PermissionCollections的集合。 也就是说,它的成员都是均匀的PermissionCollection。 例如,Permissions对象可能具有所有FilePermission对象的FilePermissionCollection,所有SocketPermission对象的SocketPermissionCollection等等。 其add
方法为相应的集合添加了一个权限。每当将权限添加到异构PermissionCollection(如权限)中时,PermissionCollection还不包含指定权限类型的PermissionCollection,PermissionCollection应该在权限类上调用
newPermissionCollection
方法,以查看是否需要特殊的PermissionCollection。 如果newPermissionCollection
返回null,PermissionCollection可以将权限存储在任何所需的PermissionCollection类型中(一个使用Hashtable,一个使用Vector等)。 例如,Permissions对象使用在Hashtable中存储权限对象的默认PermissionCollection实现。PermissionCollection的子类实现应该假定它们可以从多个线程同时调用,因此应该被正确同步。 此外,通过
elements
方法返回的枚举不是故障快速的 。 在枚举集合时不应执行对集合的修改。- 从以下版本开始:
- 1.2
- 另请参见:
-
Permission
,Permissions
, Serialized Form
-
-
构造方法摘要
构造方法 Constructor 描述 PermissionCollection()
-
方法摘要
所有方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 abstract void
add(Permission permission)
将权限对象添加到当前权限对象集合。abstract Enumeration<Permission>
elements()
返回集合中所有Permission对象的枚举。Stream<Permission>
elementsAsStream()
返回集合中所有权限对象的流。abstract boolean
implies(Permission permission)
检查此PermissionCollection中持有的Permission对象的集合是否暗示了指定的权限。boolean
isReadOnly()
如果此PermissionCollection对象被标记为只读方式,则返回true。void
setReadOnly()
将此PermissionCollection对象标记为“只读”。String
toString()
返回描述此PermissionCollection对象的字符串,提供有关其所包含的所有权限的信息。
-
-
-
方法详细信息
-
add
public abstract void add(Permission permission)
将权限对象添加到当前权限对象集合。- 参数
-
permission
- 要添加的权限对象。 - 异常
-
SecurityException
- - 如果此PermissionCollection对象已被标记为只读 -
IllegalArgumentException
- - 如果此PermissionCollection对象是均匀集合,并且权限不是正确的类型。
-
implies
public abstract boolean implies(Permission permission)
检查此PermissionCollection中持有的Permission对象的集合是否暗示了指定的权限。- 参数
-
permission
- 要比较的权限对象。 - 结果
- 如果集合中的权限暗示“权限”,则为true,否则为false。
-
elements
public abstract Enumeration<Permission> elements()
返回集合中所有Permission对象的枚举。- 结果
- 列举所有权限。
- 另请参见:
-
elementsAsStream()
-
elementsAsStream
public Stream<Permission> elementsAsStream()
返回集合中所有权限对象的流。在执行终端流操作期间,不应修改集合(见
add(java.security.Permission)
)。 否则,终端流操作的结果未定义。- 实现要求:
-
默认实现创建一个流,其源是从调用返回的枚举派生到
elements()
。 - 结果
- 所有权限的流。
- 从以下版本开始:
- 9
-
setReadOnly
public void setReadOnly()
将此PermissionCollection对象标记为“只读”。 PermissionCollection对象被标记为只读方式后,不能使用add
添加新的权限对象。
-
isReadOnly
public boolean isReadOnly()
如果此PermissionCollection对象被标记为只读方式,则返回true。 如果是只读方式,则不能使用add
添加新的权限对象。默认情况下,对象不是只读的。 它可以通过调用
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
是一个调用这个对象的超类的这个toString
方法,它是Object。 结果是这个PermissionCollection的类型名称后跟这个对象的哈希码,因此使客户端区分不同的PermissionCollections对象,即使它们包含相同的权限。
-
-