java.lang.Object
java.security.Permission
- 所有已实现的接口:
-
Serializable
,Guard
- 直接已知的子类:
-
AllPermission
,BasicPermission
,CardPermission
,FilePermission
,MBeanPermission
,PrivateCredentialPermission
,ServicePermission
,SocketPermission
,UnresolvedPermission
,URLPermission
用于表示对系统资源访问的抽象类。所有权限都有一个名称(其解释取决于子类),以及用于定义特定权限子类语义的抽象函数。
大多数Permission
对象还包括一个“actions”列表,该列表指示对象允许的操作。例如,对于java.io.FilePermission
对象,权限名称是文件(或目录)的路径名,而操作列表(例如“read, write”)指定为指定文件(或指定目录中的文件)授予的操作。对于不需要此类列表的Permission
对象(例如java.lang.RuntimePermission
),操作列表是可选的;您要么具有命名权限(例如“system.exit”),要么没有。
每个子类必须实现的一个重要方法是implies
方法,用于比较权限。基本上,“权限p1暗示权限p2”意味着如果授予权限p1,则自然授予权限p2。因此,这不是相等性测试,而更像是子集测试。
Permission
对象类似于String
对象,一旦创建后就无法更改。子类不应提供可以更改权限状态的方法一旦创建了权限。
- 自从:
- 1.2
- 参见:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
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
的字符串。
-
Constructor Details
-
Permission
用指定的名称构造权限。- 参数:
-
name
- 正在创建的Permission
对象的名称。
-
-
Method Details
-
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
方法,则hashCode
方法必须始终一致地返回相同的整数。这个整数不需要在应用程序的一个执行到另一个执行之间保持一致。 - 如果两个
Permission
对象根据equals
方法相等,则在两个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")',或者如果操作列表为null
或空,则为'("ClassName" "name")'。
-