模块 java.base

类 PermissionCollection

java.lang.Object
java.security.PermissionCollection
所有已实现的接口:
Serializable
已知子类:
Permissions

public abstract class PermissionCollection extends Object implements Serializable
表示权限对象集合的抽象类。

使用 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 对象可能有一个用于所有 FilePermission 对象的 FilePermissionCollection,一个用于所有 SocketPermission 对象的 SocketPermissionCollection,等等。它的 add 方法为适当的集合添加了权限。

每当将权限添加到异构 PermissionCollection(例如 Permissions),并且 PermissionCollection 尚未包含指定权限类型的 PermissionCollection 时,PermissionCollection 应调用权限类的 newPermissionCollection 方法以查看它是否需要特殊的 PermissionCollection。如果 newPermissionCollection 返回 null ,则 PermissionCollection 可以自由地将权限存储在它想要的任何类型的 PermissionCollection 中(一个使用 Hashtable ,一个使用 Vector ,等等)。例如,Permissions 对象使用默认的 PermissionCollection 实现,将权限对象存储在 Hashtable 中。

PermissionCollection 的子类实现应该假定它们可以从多个线程同时调用,因此应该正确同步。此外,通过 elements 方法返回的枚举不是 fail-fast 。在枚举该集合时,不应对该集合进行修改。

自从:
1.2
参见:
  • 构造方法详细信息

    • PermissionCollection

      public PermissionCollection()
      子类调用的构造方法。
  • 方法详情

    • add

      public abstract void add(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

      public Stream <Permission > elementsAsStream()
      返回集合中所有权限对象的流。

      在执行终端流操作期间不应修改集合(请参阅 add(java.security.Permission) )。否则,终端流操作的结果是未定义的。

      实现要求:
      默认实现创建一个流,其源来自调用 elements() 返回的枚举。
      返回:
      所有权限的流。
      自从:
      9
    • setReadOnly

      public void setReadOnly()
      将此 PermissionCollection 对象标记为“只读”。将 PermissionCollection 对象标记为只读后,无法使用 add 添加新的 Permission 对象。
    • isReadOnly

      public boolean isReadOnly()
      如果此 PermissionCollection 对象被标记为只读,则返回 true。如果它是只读的,则不能使用 add 添加新的 Permission 对象。

      默认情况下,对象是not只读。可以通过调用 setReadOnly 将其设置为只读。

      返回:
      true 如果此 PermissionCollection 对象被标记为只读,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 对象,即使它们包含相同的权限。
      重写:
      toString 在类 Object
      返回:
      有关此 PermissionCollection 对象的信息,如上所述。