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