模块  java.base
软件包  java.security

Class 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
    另请参见:
    PermissionPermissionsSerialized Form
    • 构造方法详细信息

      • PermissionCollection

        public 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。
      • 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对象,即使它们包含相同的权限。
        重写:
        toString在课程 Object
        结果
        有关此PermissionCollection对象的信息,如上所述。