public abstract class Permission extends Object implements Guard, Serializable
大多数权限对象还包括一个“操作”列表,用于告知对象允许的操作。 例如,对于java.io.FilePermission
对象,权限名称是文件(或目录)的路径名,操作列表(例如“读取,写入”)指定为指定的文件授予哪些操作(或者为指定目录)。 对于不需要这样的列表的权限对象(如java.lang.RuntimePermission
,操作列表是可选的; 您具有命名权限(例如“system.exit”),或者您没有。
必须由每个子类实现的一个implies
方法是implies
比较权限的方法。 基本上,“权限p1意味着许可p2”表示如果被授予权限p1,则自然会授予权限p2。 因此,这不是一个等式测试,而是一个子集测试。
权限对象与String对象类似,因为它们在创建后是不可变的。 子类不能提供可以在创建权限后更改权限状态的方法。
Permissions
, PermissionCollection
, Serialized Form
Constructor and Description |
---|
Permission(String name)
构造具有指定名称的权限。
|
Modifier and Type | Method and Description |
---|---|
void |
checkGuard(Object object)
实施保护接口以获得许可。
|
abstract boolean |
equals(Object obj)
检查两个Permission对象的相等性。
|
abstract String |
getActions()
以String形式返回操作。
|
String |
getName()
返回此权限的名称。
|
abstract int |
hashCode()
返回此Permission对象的哈希码值。
|
abstract boolean |
implies(Permission permission)
检查指定权限的操作是否由此对象的操作“隐含”。
|
PermissionCollection |
newPermissionCollection()
为给定的Permission对象返回一个空的PermissionCollection,如果未定义,则返回null。
|
String |
toString()
返回描述此权限的字符串。
|
public Permission(String name)
name
- 正在创建的权限对象的名称。
public void checkGuard(Object object) throws SecurityException
SecurityManager.checkPermission
方法,将该权限对象作为权限进行检查。
如果访问被授予,则默认返回。
否则,抛出SecurityException。
checkGuard
在接口
Guard
object
- 被保护的对象(当前被忽略)。
SecurityException
- 如果安全管理器存在,并且其
checkPermission
方法不允许访问。
Guard
, GuardedObject
, SecurityManager.checkPermission(java.security.Permission)
public abstract boolean implies(Permission permission)
这必须由Permission的子类实现,因为它们是唯一可以在Permission对象上强加语义的。
implies
使用implies
方法来确定所请求的权限是否被已知在当前执行上下文中有效的另一权限所暗示。
permission
- 允许检查。
public abstract boolean equals(Object obj)
不要使用equals
方法进行访问控制决策; 使用implies
方法。
equals
在
Object
obj
- 我们正在测试与该对象相等的对象。
Object.hashCode()
, HashMap
public abstract int hashCode()
权限对象所需的hashCode
行为如下:
hashCode
方法必须始终返回相同的整数。 该整数不需要从一个应用程序的执行到相同应用程序的另一个执行保持一致。 equals
方法相等,则在两个Permission对象中的每一个上调用hashCode
方法必须产生相同的整数结果。 hashCode
在
Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public final String getName()
java.io.FilePermission
的情况下,该名称将是一个路径名。
public abstract String getActions()
perm1 = new FilePermission(p1,"read,write");
perm2 = new FilePermission(p2,"write,read");
当调用getActions
方法时,都返回“读,写”。
public PermissionCollection newPermissionCollection()
PermissionCollection.implies
方法时提供正确的语义,则类Permission的子类应该重写。
如果返回null,那么此方法的调用者可以自由地在其选择的任何PermissionCollection中存储此类型的权限(使用Hashtable,使用Vector等)。