java.lang.Object
java.security.Permission
- 所有已实现的接口:
Serializable
,Guard
- 已知子类:
AllPermission
,BasicPermission
,CardPermission
,FilePermission
,MBeanPermission
,PrivateCredentialPermission
,ServicePermission
,SocketPermission
,UnresolvedPermission
,URLPermission
表示对系统资源的访问的抽象类。所有权限都有一个名称(其解释取决于子类),以及用于定义特定权限子类的语义的抽象函数。
大多数 Permission
对象还包括一个“操作”列表,告诉该对象允许的操作。例如,对于java.io.FilePermission
对象,权限名称是文件(或目录)的路径名,而操作列表(如“读、写”)指定了对指定文件(或目录中的文件)授予哪些操作指定目录)。操作列表对于 Permission
对象是可选的,例如 java.lang.RuntimePermission
,不需要这样的列表;您要么拥有命名权限(例如“system.exit”),要么没有。
每个子类必须实现的一个重要方法是比较权限的implies
方法。基本上,“permission p1 implies permission p2”意味着如果一个人被授予权限p1,那么一个人自然被授予权限p2。因此,这不是相等性测试,而是更多的子集测试。
Permission
对象与 String
对象相似,因为它们一旦创建就不可更改。子类不应提供可以在权限创建后更改权限状态的方法。
- 自从:
- 1.2
- 参见:
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述void
checkGuard
(Object object) 实现权限的守卫接口。abstract boolean
检查两个Permission
对象是否相等。abstract String
将操作作为String
返回。final String
getName()
返回此Permission
的名称。abstract int
hashCode()
返回此Permission
对象的哈希码值。abstract boolean
implies
(Permission permission) 检查指定权限的操作是否“隐含”于此对象的操作。为给定的Permission
对象返回空的PermissionCollection
,如果未定义,则返回null
。toString()
返回描述此Permission
的字符串。
-
构造方法详细信息
-
Permission
构造具有指定名称的权限。- 参数:
name
- 正在创建的Permission
对象的名称。
-
-
方法详情
-
checkGuard
实现权限的守卫接口。SecurityManager.checkPermission
方法被调用,将此权限对象作为要检查的权限传递。如果授予访问权限,则静默返回。否则,抛出一个SecurityException
。- 指定者:
checkGuard
在接口Guard
中- 参数:
object
- 被保护的对象(当前被忽略)。- 抛出:
SecurityException
- 如果安全管理器存在且其checkPermission
方法不允许访问。- 参见:
-
implies
检查指定权限的操作是否“隐含”于此对象的操作。这必须由
Permission
的子类实现,因为它们是唯一可以对Permission
对象施加语义的子类。implies
方法由 AccessController 用于确定请求的权限是否由已知在当前执行上下文中有效的另一个权限暗示。- 参数:
permission
- 检查的权限。- 返回:
true
如果此对象隐含了指定的权限,false
如果不是。
-
equals
检查两个Permission
对象是否相等。不要使用
equals
方法来做出访问控制决策;使用implies
方法。 -
hashCode
public abstract int hashCode()返回此Permission
对象的哈希码值。Permission
对象所需的hashCode
行为如下:- 每当在 Java 应用程序执行期间对同一
Permission
对象多次调用时,hashCode
方法必须一致地返回相同的整数。从一个应用程序的一次执行到同一应用程序的另一次执行,该整数不需要保持一致。 - 如果根据
equals
方法两个Permission
对象相等,则对两个Permission
对象中的每一个调用hashCode
方法必须产生相同的整数结果。
- 每当在 Java 应用程序执行期间对同一
-
getName
返回此Permission
的名称。例如,在java.io.FilePermission
的情况下,名称将是路径名。- 返回:
-
这个
Permission
的名字。
-
getActions
将操作作为String
返回。这是抽象的,因此子类可以推迟创建String
表示,直到需要一个。子类应该总是以他们认为是规范的形式返回动作。例如,通过以下方式创建的两个 FilePermission 对象:perm1 = new FilePermission(p1,"read,write"); perm2 = new FilePermission(p2,"write,read");
在调用getActions
方法时都返回“read,write”。- 返回:
-
这个
Permission
的动作。
-
newPermissionCollection
为给定的Permission
对象返回空的PermissionCollection
,如果未定义,则返回null
。如果Permission
类的子类需要将其权限存储在特定的PermissionCollection
对象中,以便在调用PermissionCollection.implies
方法时提供正确的语义,则它们应覆盖此方法。如果返回null
,则此方法的调用者可以自由地将此类型的权限存储在他们选择的任何PermissionCollection
中(使用 Hashtable 的,使用 Vector 的,等等)。- 返回:
-
此类
Permission
的新PermissionCollection
对象,如果未定义,则为null
。
-
toString
返回描述此Permission
的字符串。约定是以下列格式指定类名称、权限名称和操作:'("ClassName" "name" "actions")',或者 '("ClassName" "name")' 如果操作列表是null
或为空。
-