模块  java.base
软件包  java.security

Class UnresolvedPermission

  • 实现的所有接口
    SerializableGuard

    public final class UnresolvedPermissionextends Permissionimplements Serializable
    UnresolvedPermission类用于保存初始化策略时“未解析”的权限。 未解析的权限是在策略初始化时其实际权限类尚不存在的权限(请参阅下文)。

    Java运行时的策略(指定哪些权限可用于来自各种主体的代码)由Policy对象表示。 每当初始化或刷新策略时,都会为策略允许的所有权限创建适当类的权限对象。

    策略配置引用的许多权限类类型是本地存在的权限类型(即可以在CLASSPATH上找到的权限类型)。 可以在策略初始化期间实例化此类权限的对象。 例如,始终可以实例化java.io.FilePermission,因为在CLASSPATH上找到了FilePermission类。

    策略初始化期间可能尚不存在其他权限类。 例如,引用的权限类可能位于稍后将加载的JAR文件中。 对于每个这样的类,都会实例化UnresolvedPermission。 因此,UnresolvedPermission本质上是一个包含有关权限信息的“占位符”。

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

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

    新创建的权限对象将替换已删除的UnresolvedPermission。

    需要注意的是getName一个方法UnresolvedPermission返回type对于尚未解析的基础权限(类名)。

    从以下版本开始:
    1.2
    另请参见:
    PermissionPermissionsPermissionCollectionPolicySerialized Form
    • 构造方法详细信息

      • 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 in class Permission
        参数
        p - 经过检查的许可。
        结果
        假。
      • equals

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

        要确定证书相等性,此方法仅比较实际的签名者证书。 此方法不考虑支持证书链。

        Specified by:
        equals在课程 Permission
        参数
        obj - 我们正在测试与此对象相等的对象。
        结果
        如果obj是UnresolvedPermission,则为true,并且具有与此对象相同的类型(类)名称,权限名称,操作和证书。
        另请参见:
        Object.hashCode()HashMap
      • getActions

        public String getActions()
        返回操作的规范字符串表示形式,当前为空字符串“”,因为UnresolvedPermission没有操作。 也就是说,解析此UnresolvedPermission时将创建的权限的操作可能是非null,但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()
        返回用于存储UnresolvedPermission对象的新PermissionCollection对象。
        重写:
        newPermissionCollection ,课程 Permission
        结果
        适用于存储UnresolvedPermissions的新PermissionCollection对象。