public final class UnresolvedPermission extends Permission implements Serializable
Java运行时的策略(指定哪些权限可用于各种主体的代码)由Policy对象表示。 无论何时初始化或刷新策略,都会为策略允许的所有权限创建适当类的权限对象。
策略配置引用的许多权限类类型是本地存在的(即CLASSPATH中可以找到的类型)。 可以在策略初始化期间实例化此类权限的对象。 例如,始终可以实例化一个java.io.FilePermission,因为在CLASSPATH上找到FilePermission类。
在策略初始化期间,其他权限类可能不存在。 例如,引用的权限类可能在稍后加载的JAR文件中。 对于每个这样的类,一个UnresolvedPermission被实例化。 因此,UnresolvedPermission本质上是一个包含有关权限信息的“占位符”。
之后,当代码调用AccessController.checkPermission的类型以前未被解析,但其类已被加载的先前未被解析的类型的权限被“解决”。 也就是说,对于每个这样的UnresolvedPermission,基于UnresolvedPermission中的信息,实例化了适当类类型的新对象。
为了实例化新类,UnresolvedPermission假定该类提供了一个零,一个和/或两个参数的构造函数。 零参数构造函数将用于实例化没有名称而没有操作的权限。 假设一个arg构造函数以String
名称作为输入,并且假设一个双参数构造函数String
名称和String
操作作为输入。 UnresolvedPermission可以调用具有null名称和/或操作的null
。 如果适当的权限构造函数不可用,则UnresolvedPermission将被忽略,并且相关权限将不会被授予执行代码。
新创建的权限对象将替换被删除的UnresolvedPermission。
需要注意的是getName
一个方法UnresolvedPermission
返回type
对于尚未解析的基础权限(类名)。
Permission
, Permissions
, PermissionCollection
, Policy
, Serialized Form
Constructor and Description |
---|
UnresolvedPermission(String type, String name, String actions, Certificate[] certs)
创建一个新的UnresolvedPermission,当权限解决时,包含稍后实际创建指定类的权限所需的权限信息。
|
Modifier and Type | Method and Description |
---|---|
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()
返回一个新的PermissionCollection对象,用于存储UnresolvedPermission对象。
|
String |
toString()
返回描述此UnresolvedPermission的字符串。
|
checkGuard, getName
public UnresolvedPermission(String type, String name, String actions, Certificate[] certs)
type
- 解析此未解决权限时将创建的Permission类的类名。
name
-
name
的名称。
actions
-
actions
的动作。
certs
- 许可类的签名证书。
这是证书链的列表,其中每个链由签名者证书和可选的其支持证书链组成。
每个链从底到顶排序(即,首先签名者证书和最后的(根)证书颁发机构)。
签名者证书是从数组复制的。
对数组的后续更改不会影响此UnsolvedPermission。
public boolean implies(Permission p)
implies
在类别
Permission
p
- 允许检查。
public boolean equals(Object obj)
要确定证书的相等性,此方法仅比较实际的签名者证书。 该方法不考虑支持证书链。
equals
在类别
Permission
obj
- 我们正在测试与此对象相等的对象。
Object.hashCode()
, HashMap
public int hashCode()
hashCode
在类别
Permission
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public String getActions()
getActions
在类别
Permission
public String getUnresolvedType()
public String getUnresolvedName()
null
public String getUnresolvedActions()
null
public Certificate[] getUnresolvedCerts()
public String toString()
toString
在类别
Permission
public PermissionCollection newPermissionCollection()
newPermissionCollection
在类别
Permission