java.security

接口
异常
java.lang.Object
  继承者 java.security.Permission
      继承者 java.security.UnresolvedPermission
所有已实现的接口:
Serializable, Guard

public final class UnresolvedPermission
     
extends Permission
implements Serializable

UnresolvedPermission 类用来保持初始化 Policy 时“未解析”的权限。未解析的权限是这样的一种权限:初始化 Policy 时其实际 Permission 类尚未存在(请参见以下内容)。

Java 运行时的策略(指定各种主体代码可用的权限)由 Policy 对象表示。每当初始化或刷新 Policy 时,都将为该 Policy 允许的所有权限创建相应类的 Permission 对象。

策略配置引用的许多权限类类型都是一些本机存在的类型(即一些可在 CLASSPATH 上找到的类型)。此类权限的对象可在策略初始化期间实例化。例如,自从在 CLASSPATH 上找到 FilePermission 类之后,始终可以实例化 java.io.FilePermission。

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

稍后,当代码在以前未解析、但其类在那时已经加载的类型权限上调用 AccessController.checkPermission 时,该类型以前未解析的权限将被“解析”。也就是说,将基于 UnresolvedPermission 中的信息,为每个这样的 UnresolvedPermission 实例化一个新的相应类类型的对象。

为了实例化此新类,UnresolvedPermission 假定该类提供了零、一个和/或两个参数构造方法。零参数构造方法将用来实例化不带有名称和操作的权限。假定带一个参数的构造方法采用 String 名称作为输入;带两个参数的构造方法采用 String 名称和 String 操作作为输入。UnresolvedPermission 可以调用带有 null 名称和/或操作的构造方法。如果没有提供适当的权限构造方法,则将忽略 UnresolvedPermission,并且不会授予执行代码的相关权限。

新创建的权限对象取代 UnresolvedPermission,并将后者移除。

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

另请参见:
Permission, Permissions, PermissionCollection, Policy, 序列化表格

构造方法摘要
UnresolvedPermission(String type, String name, String actions, Certificate[] certs)
          在解析权限时,创建一个新的 UnresolvedPermission,使之包含稍后实际创建指定类的 Permission 时所需的权限信息。
 
方法摘要
 boolean equals(Object obj)
          检查两个 UnresolvedPermission 对象的相等性。
 String getActions()
          返回这些操作的规范的字符串表示形式,该字符串当前为空字符串 "",原因是没有针对 UnresolvedPermission 的操作。
 String getUnresolvedActions()
          获取尚未解析的基础权限的操作。
 Certificate[] getUnresolvedCerts()
          获取尚未解析的基础权限的签署者证书(无任何支持链)。
 String getUnresolvedName()
          获取尚未解析的基础权限的目标名称。
 String getUnresolvedType()
          获取尚未解析的基础权限的类型(类名称)。
 int hashCode()
          返回此对象的哈希码值。
 boolean implies(Permission p)
          对于未解析的权限,此方法始终返回 false。
 PermissionCollection newPermissionCollection()
          返回存储 UnresolvedPermission 对象的新 PermissionCollection 对象。
 String toString()
          返回描述此 UnresolvedPermission 的字符串。
 
从类 java.security.Permission 继承的方法
checkGuard, getName
 
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

UnresolvedPermission

public UnresolvedPermission(String type,
                            String name,
                            String actions,
                            Certificate[] certs)
在解析权限时,创建一个新的 UnresolvedPermission,使之包含稍后实际创建指定类的 Permission 时所需的权限信息。

参数:
type - 解析此未解析的权限时将创建的 Permission 类的类名称。
name - 权限名称。
actions - 对权限的操作。
certs - 用来为权限类签名的证书。这是一个证书链列表,其中每个链都是由签署人证书和其可选的支持证书链构成。每个链都按从底到顶进行排序(即签署人证书排在首位置,(根)证书授权排在末位置)。签署人证书是从数组中复制的。数组的后续更改不会影响此 UnsolvedPermission。
方法详细信息

implies

public boolean implies(Permission p)
对于未解析的权限,此方法始终返回 false。也就是说,从不认为 UnresolvedPermission 暗含其他权限。

指定者:
Permission 中的 implies
参数:
p - 所要检查的权限。
返回:
false。

equals

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

为了确定证书是否相等,此方法仅比较实际签署人证书。此方法没有考虑对证书链的支持。

指定者:
Permission 中的 equals
参数:
obj - 要与此对象进行相等性测试的对象。
返回:
如果 obj 是 UnresolvedPermission,并且具有与此对象相同的类型(类)名称、权限名称、操作和证书,则返回 true。
另请参见:
Object.hashCode(), Hashtable

hashCode

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

指定者:
Permission 中的 hashCode
返回:
此对象的哈希码值。
另请参见:
Object.equals(java.lang.Object), Hashtable

getActions

public String getActions()
返回这些操作的规范的字符串表示形式,该字符串当前为空字符串 "",原因是没有针对 UnresolvedPermission 的操作。也就是说,解析此 UnresolvedPermission 时将创建的权限的操作可以为非 null,但永远不会认为 UnresolvedPermission 本身具有任何操作。

指定者:
Permission 中的 getActions
返回:
空字符串 ""。

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")'。

覆盖:
Permission 中的 toString
返回:
与此 UnresolvedPermission 有关的信息。

newPermissionCollection

public PermissionCollection newPermissionCollection()
返回存储 UnresolvedPermission 对象的新 PermissionCollection 对象。

覆盖:
Permission 中的 newPermissionCollection
返回:
适合存储 UnresolvedPermissions 的新 PermissionCollection 对象。