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