- 所有已实现的接口:
Serializable
,Guard
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
。
请注意,UnresolvedPermission
的 getName
方法返回尚未解析的基础权限的 type
(类名)。
- 自从:
- 1.2
- 参见:
-
构造方法总结
构造方法构造方法描述UnresolvedPermission
(String type, String name, String actions, Certificate[] certs) 创建一个新的UnresolvedPermission
,其中包含稍后在解析权限时实际创建指定类的权限所需的权限信息。 -
方法总结
修饰符和类型方法描述boolean
检查两个UnresolvedPermission
对象是否相等。返回操作的规范字符串表示形式,当前为空字符串“”,因为UnresolvedPermission
没有操作。获取尚未解决的基础权限的操作。获取尚未解析的底层权限的签名者证书(没有任何支持链)。获取尚未解析的底层权限的目标名称。获取尚未解析的底层权限的类型(类名)。int
hashCode()
返回此对象的哈希码值。boolean
对于未解析的权限,此方法始终返回false
。返回用于存储UnresolvedPermission
个对象的新 PermissionCollection 对象。toString()
返回描述此UnresolvedPermission
的字符串。在类 java.security.Permission 中声明的方法
checkGuard, getName
-
构造方法详细信息
-
UnresolvedPermission
创建一个新的UnresolvedPermission
,其中包含稍后在解析权限时实际创建指定类的权限所需的权限信息。- 参数:
type
- 解析此未解析权限时将创建的 Permission 类的类名。name
- 权限的名称。actions
- 权限的操作。certs
- 权限类的签名证书。这是一个证书链列表,其中每个链由一个签名者证书和可选的支持证书链组成。每个链都是从下到上排序的(即,首先是签名者证书,最后是(根)证书颁发机构)。签署者证书是从数组中复制的。对数组的后续更改不会影响此 UnresolvedPermission。
-
-
方法详情
-
implies
对于未解析的权限,此方法始终返回false
。也就是说,一个UnresolvedPermission
永远不会被认为是暗示另一个权限。- 指定者:
implies
在类Permission
中- 参数:
p
- 检查的权限。- 返回:
false
.
-
equals
检查两个UnresolvedPermission
对象是否相等。检查obj
是一个UnresolvedPermission
,并且具有与此对象相同的类型(类)名称、权限名称、操作和证书。为确定证书是否相等,此方法仅比较实际的签名者证书。此方法不考虑支持的证书链。
- 指定者:
equals
在类Permission
中- 参数:
obj
- 我们正在测试与此对象是否相等的对象。- 返回:
-
如果
obj
是一个UnresolvedPermission
并且具有与此对象相同的类型(类)名称、权限名称、操作和证书,则为真。 - 参见:
-
hashCode
public int hashCode()返回此对象的哈希码值。- 指定者:
hashCode
在类Permission
中- 返回:
- 此对象的哈希码值。
- 参见:
-
getActions
返回操作的规范字符串表示形式,当前为空字符串“”,因为UnresolvedPermission
没有操作。即,解析此UnresolvedPermission
时将创建的权限的操作可能是非空的,但UnresolvedPermission
本身永远不会被视为具有任何操作。- 指定者:
getActions
在类Permission
中- 返回:
- 空字符串“”。
-
getUnresolvedType
获取尚未解析的底层权限的类型(类名)。- 返回:
- 尚未解析的底层权限的类型(类名)
- 自从:
- 1.5
-
getUnresolvedName
获取尚未解析的底层权限的目标名称。- 返回:
-
尚未解析的底层权限的目标名称,如果没有目标名称,则为
null
- 自从:
- 1.5
-
getUnresolvedActions
获取尚未解决的基础权限的操作。- 返回:
-
尚未解决的基础权限的操作,或者
null
如果没有操作 - 自从:
- 1.5
-
getUnresolvedCerts
获取尚未解析的底层权限的签名者证书(没有任何支持链)。- 返回:
-
尚未解析的基础权限的签名者证书,如果没有签名者证书,则为
null
。每次调用此方法时返回一个新数组。 - 自从:
- 1.5
-
toString
返回描述此UnresolvedPermission
的字符串。约定是指定类名、权限名和操作,格式如下:'(unresolved "ClassName" "name" "actions")'。- 重写:
toString
在类Permission
中- 返回:
-
有关此
UnresolvedPermission
的信息。
-
newPermissionCollection
返回用于存储UnresolvedPermission
个对象的新 PermissionCollection 对象。- 重写:
newPermissionCollection
在类Permission
中- 返回:
-
适合存储
UnresolvedPermissions
的新 PermissionCollection 对象。
-