java.lang.Object java.security.Permission java.security.UnresolvedPermission
public final class UnresolvedPermission
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,并将后者移除。
注意,用于 UnresolvedPermission
的 getName
方法将返回尚未解析的基础权限的 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 |
构造方法详细信息 |
---|
public UnresolvedPermission(String type, String name, String actions, Certificate[] certs)
type
- 解析此未解析的权限时将创建的 Permission 类的类名称。
name
- 权限名称。
actions
- 对权限的操作。
certs
- 用来为权限类签名的证书。这是一个证书链列表,其中每个链都是由签署人证书和其可选的支持证书链构成。每个链都按从底到顶进行排序(即签署人证书排在首位置,(根)证书授权排在末位置)。签署人证书是从数组中复制的。数组的后续更改不会影响此 UnsolvedPermission。
方法详细信息 |
---|
public boolean implies(Permission p)
Permission
中的
implies
p
- 所要检查的权限。
public boolean equals(Object obj)
为了确定证书是否相等,此方法仅比较实际签署人证书。此方法没有考虑对证书链的支持。
Permission
中的
equals
obj
- 要与此对象进行相等性测试的对象。
Object.hashCode()
,
Hashtable
public int hashCode()
Permission
中的
hashCode
Object.equals(java.lang.Object)
,
Hashtable
public String getActions()
Permission
中的
getActions
public String getUnresolvedType()
public String getUnresolvedName()
null
public String getUnresolvedActions()
null
public Certificate[] getUnresolvedCerts()
public String toString()
Permission
中的
toString
public PermissionCollection newPermissionCollection()
Permission
中的
newPermissionCollection