Module  java.base
软件包  java.security

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

      • 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 - 要比较的权限对象。
        结果
        如果集合中的权限暗示“权限”,则为true,否则为false。
      • 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对象,即使它们包含相同的权限。
        重写:
        toStringObject
        结果
        有关此PermissionCollection对象的信息,如上所述。