模块 java.base

类 UnresolvedPermission

java.lang.Object
java.security.Permission
java.security.UnresolvedPermission
所有已实现的接口:
Serializable , Guard

public final class UnresolvedPermission extends Permission implements Serializable
UnresolvedPermission 类用于保存初始化策略时“未解决”的权限。未解决的权限是在初始化策略时其实际权限类尚不存在的权限(见下文)。

Java 运行时的策略(指定哪些权限可用于来自不同主体的代码)由 Policy 对象表示。每当初始化或刷新 Policy 时,都会为该 Policy 允许的所有权限创建适当类的 Permission 对象。

策略配置引用的许多权限类类型是本地存在的(即可以在 CLASSPATH 上找到的)。此类权限的对象可以在策略初始化期间实例化。例如,总是可以实例化 java.io.FilePermission,因为 FilePermission 类位于 CLASSPATH 中。

在 Policy 初始化期间,其他权限类可能尚不存在。例如,引用的权限类可能位于稍后将加载的 JAR 文件中。对于每个这样的类,都会实例化一个UnresolvedPermission。因此,UnresolvedPermission 本质上是一个包含有关权限信息的“占位符”。

稍后,当代码调用 AccessController.checkPermission(java.security.Permission) 之前未解析的类型的权限时,但其类已被加载,该类型之前未解析的权限将被“解析”。也就是说,对于每个这样的 UnresolvedPermission ,都会根据 UnresolvedPermission 中的信息实例化一个适当类类型的新对象。

为了实例化新类,UnresolvedPermission 假定该类提供了一个零、一个和/或两个参数的构造函数。零参数构造函数将用于实例化没有名称且没有操作的权限。假定单参数构造函数将 String 名称作为输入,并假定双参数构造函数将 String 名称和 String 操作作为输入。 UnresolvedPermission 可以调用具有 null 名称和/或操作的构造函数。如果没有合适的权限构造函数,UnresolvedPermission 将被忽略,相关权限将不会被授予执行代码。

新创建的权限对象替换了已删除的 UnresolvedPermission

请注意,UnresolvedPermissiongetName 方法返回尚未解析的基础权限的 type(类名)。

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

    • UnresolvedPermission

      public UnresolvedPermission(String  type, String  name, String  actions, Certificate [] certs)
      创建一个新的UnresolvedPermission,其中包含稍后在解析权限时实际创建指定类的权限所需的权限信息。
      参数:
      type - 解析此未解析权限时将创建的 Permission 类的类名。
      name - 权限的名称。
      actions - 权限的操作。
      certs - 权限类的签名证书。这是一个证书链列表,其中每个链由一个签名者证书和可选的支持证书链组成。每个链都是从下到上排序的(即,首先是签名者证书,最后是(根)证书颁发机构)。签署者证书是从数组中复制的。对数组的后续更改不会影响此 UnresolvedPermission。
  • 方法详情

    • implies

      public boolean implies(Permission  p)
      对于未解析的权限,此方法始终返回 false。也就是说,一个 UnresolvedPermission 永远不会被认为是暗示另一个权限。
      指定者:
      implies 在类 Permission
      参数:
      p - 检查的权限。
      返回:
      false .
    • equals

      public boolean equals(Object  obj)
      检查两个 UnresolvedPermission 对象是否相等。检查 obj 是一个 UnresolvedPermission ,并且具有与此对象相同的类型(类)名称、权限名称、操作和证书。

      为确定证书是否相等,此方法仅比较实际的签名者证书。此方法不考虑支持的证书链。

      指定者:
      equals 在类 Permission
      参数:
      obj - 我们正在测试与此对象是否相等的对象。
      返回:
      如果 obj 是一个 UnresolvedPermission 并且具有与此对象相同的类型(类)名称、权限名称、操作和证书,则为真。
      参见:
    • hashCode

      public int hashCode()
      返回此对象的哈希码值。
      指定者:
      hashCode 在类 Permission
      返回:
      此对象的哈希码值。
      参见:
    • getActions

      public String  getActions()
      返回操作的规范字符串表示形式,当前为空字符串“”,因为 UnresolvedPermission 没有操作。即,解析此 UnresolvedPermission 时将创建的权限的操作可能是非空的,但 UnresolvedPermission 本身永远不会被视为具有任何操作。
      指定者:
      getActions 在类 Permission
      返回:
      空字符串“”。
    • getUnresolvedType

      public String  getUnresolvedType()
      获取尚未解析的底层权限的类型(类名)。
      返回:
      尚未解析的底层权限的类型(类名)
      自从:
      1.5
    • getUnresolvedName

      public String  getUnresolvedName()
      获取尚未解析的底层权限的目标名称。
      返回:
      尚未解析的底层权限的目标名称,如果没有目标名称,则为 null
      自从:
      1.5
    • getUnresolvedActions

      public String  getUnresolvedActions()
      获取尚未解决的基础权限的操作。
      返回:
      尚未解决的基础权限的操作,或者 null 如果没有操作
      自从:
      1.5
    • getUnresolvedCerts

      public Certificate [] getUnresolvedCerts()
      获取尚未解析的底层权限的签名者证书(没有任何支持链)。
      返回:
      尚未解析的基础权限的签名者证书,如果没有签名者证书,则为 null 。每次调用此方法时返回一个新数组。
      自从:
      1.5
    • toString

      public String  toString()
      返回描述此 UnresolvedPermission 的字符串。约定是指定类名、权限名和操作,格式如下:'(unresolved "ClassName" "name" "actions")'。
      重写:
      toString 在类 Permission
      返回:
      有关此 UnresolvedPermission 的信息。
    • newPermissionCollection

      public PermissionCollection  newPermissionCollection()
      返回用于存储 UnresolvedPermission 个对象的新 PermissionCollection 对象。
      重写:
      newPermissionCollection 在类 Permission
      返回:
      适合存储 UnresolvedPermissions 的新 PermissionCollection 对象。