Module  java.base
软件包  java.security

Class Permission

  • All Implemented Interfaces:
    SerializableGuard
    已知直接子类:
    AllPermissionBasicPermissionCardPermissionFilePermissionMBeanPermissionPrivateCredentialPermissionServicePermissionSocketPermissionUnresolvedPermissionURLPermission


    public abstract class Permission
    extends Object
    implements Guard, Serializable
    用于表示访问系统资源的抽象类。 所有权限都有一个名称(其解释取决于子类),以及用于定义特定Permission子类的语义的抽象函数。

    大多数权限对象还包括一个“操作”列表,用于告知对象允许的操作。 例如,对于java.io.FilePermission对象,权限名称是文件(或目录)的路径名,操作列表(例如“读取,写入”)指定为指定的文件授予哪些操作(或者为指定目录)。 对于不需要这样的列表的权限对象(如java.lang.RuntimePermission ,操作列表是可选的; 您具有命名权限(例如“system.exit”),或者您没有。

    每个子类必须实现的一个重要方法是比较权限的implies方法。 基本上,“权限p1意味着许可p2”表示如果被授予权限p1,则自然会授予权限p2。 因此,这不是一个等式测试,而是一个子集测试。

    权限对象与String对象类似,因为它们在创建后是不可变的。 子类不能提供可以在创建权限后更改权限状态的方法。

    从以下版本开始:
    1.2
    另请参见:
    PermissionsPermissionCollectionSerialized Form
    • 构造方法详细信息

      • Permission

        public Permission​(String name)
        构造具有指定名称的权限。
        参数
        name - 正在创建的权限对象的名称。
    • 方法详细信息

      • implies

        public abstract boolean implies​(Permission permission)
        检查指定权限的操作是否由此对象的操作“隐含”。

        这必须由Permission的子类实现,因为它们是唯一可以在Permission对象上强加语义的。

        AccessController使用implies方法来确定所请求的权限是否被已知在当前执行上下文中有效的另一权限暗示。

        参数
        permission - 允许检查。
        结果
        如果此对象隐含指定的权限,则为true,否则为false。
      • equals

        public abstract boolean equals​(Object obj)
        检查两个Permission对象的相等性。

        不要使用equals方法进行访问控制决策; 使用implies方法。

        重写:
        equals中的 Object
        参数
        obj - 我们正在测试与该对象相等的对象。
        结果
        如果两个Permission对象都是等效的,则为true。
        另请参见:
        Object.hashCode()HashMap
      • hashCode

        public abstract int hashCode​()
        返回此Permission对象的哈希码值。

        权限对象所需的hashCode行为如下:

        • 无论何时在执行Java应用程序时多次在同一个Permission对象上调用该函数,那么hashCode方法必须始终返回相同的整数。 该整数不需要从一个应用程序的执行到相同应用程序的另一个执行保持一致。
        • 如果两个Permission对象根据equals方法相等,则在两个Permission对象中的每一个上调用hashCode方法必须产生相同的整数结果。
        重写:
        hashCodeObject
        结果
        该对象的哈希码值。
        另请参见:
        Object.equals(java.lang.Object)System.identityHashCode(java.lang.Object)
      • getName

        public final String getName​()
        返回此权限的名称。 例如,在java.io.FilePermission的情况下,该名称将是一个路径名。
        结果
        该权限的名称。
      • getActions

        public abstract String getActions​()
        以String形式返回操作。 这是抽象的,所以子类可以延迟创建一个String表示,直到需要。 子类应该总是以他们认为是他们的规范形式返回动作。 例如,通过以下方式创建的两个FilePermission对象:
          perm1 = new FilePermission(p1,"read,write");
           perm2 = new FilePermission(p2,"write,read"); 
        当调用getActions方法时,都返回“读,写”。
        结果
        这个权限的动作。
      • newPermissionCollection

        public PermissionCollection newPermissionCollection​()
        为给定的Permission对象返回一个空的PermissionCollection,如果未定义,则返回null。 类Permission的子类应该重写这个,如果他们需要将其权限存储在特定的PermissionCollection对象中,以便在调用PermissionCollection.implies方法时提供正确的语义。 如果返回null,那么此方法的调用者可以自由地在其选择的任何PermissionCollection中存储此类型的权限(使用Hashtable,使用Vector等)。
        结果
        一个新的PermissionCollection类型的PermissionCollection对象,如果没有定义,则返回null。
      • toString

        public String toString​()
        返回描述此权限的字符串。 约定是以以下格式指定类名,权限名和操作:'(“ClassName”“name”“actions”)'或'(“ClassName”“name”)'如果操作列表是空或空。
        重写:
        toStringObject
        结果
        有关此权限的信息。