java.security

接口
异常
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 的子类,表示 PermissionCollection 的集合。也就是说,它的每一个成员是一个同类的 PermissionCollection。例如,一个 Permissions 对象可能有一个用于所有 FilePermission 对象的 FilePermissionCollection,有一个用于所有的 SocketPermission 对象的 SocketPermissionCollection,等等。它的 add 方法将权限添加到恰当的集合。

只要将一个权限添加到不同种类的 PermissionCollection(如 Permissions),并且 PermissionCollection 尚未包含指定权限类型的 PermissionCollection,PermissionCollection 都应该对该权限的类调用 newPermissionCollection 方法来查看其是否需要特殊的 PermissionCollection。如果 newPermissionCollection 返回 null,则 PermissionCollection 可以将权限随意存储在它需要的任何类型的 PermissionCollection 中(使用 Hashtable 的,使用 Vector 的,等等)。例如,Permissions 对象使用默认的 PermissionCollection 实现,该实现将权限存储在 Hashtable 中。

PermissionCollection 的子类实现应该假定它们可能在多个线程中被同时调用,因此应该被正确地同步。此外,通过 elements 方法返回的枚举不是快速失败 的。正在对一个集合进行枚举时,不应该修改该集合。

另请参见:
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 对象标记为 "readonly"。
 String toString()
          返回描述此 PermissionCollection 对象的字符串,提供该对象中包含的关于所有权限的信息。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

PermissionCollection

public PermissionCollection()
方法详细信息

add

public abstract void add(Permission permission)
将一个权限对象添加到当前权限对象的集合。

参数:
permission - 要添加的 Permission 对象。
抛出:
SecurityException - 如果此 PermissionCollection 对象已被标记为只读。

implies

public abstract boolean implies(Permission permission)
查看此 PermissionCollection 中保存的 Permission 对象集合是否暗含指定的权限。

参数:
permission - 要比较的 Permission 对象。
返回:
如果集合中的权限暗含 "permission",则返回 true;否则返回 false。

elements

public abstract Enumeration<Permission> elements()
返回集合中所有 Permission 对象的枚举。

返回:
所有 Permission 的枚举。

setReadOnly

public void setReadOnly()
将此 PermissionCollection 对象标记为 "readonly"。当 PermissionCollection 对象被标记为只读后,不能使用 add 向其中添加任何新的 Permission 对象。


isReadOnly

public boolean isReadOnly()
如果此 PermissionCollection 对象被标记为只读,则返回 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 调用此对象的超类的 toString 方法,其超类是 Object。结果是此 PermissionCollection 的类型名称,后跟此对象的哈希码,因此使客户端能区分不同的 PermissionCollections 对象,即使它们包含相同的权限。

覆盖:
Object 中的 toString
返回:
有关此 PermissionCollection 对象的信息,如上所述。