|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.security
类 Permission
java.lang.Object java.security.Permission
- 所有已实现的接口:
- Serializable, Guard
- 直接已知子类:
- AllPermission, BasicPermission, FilePermission, MBeanPermission, PrivateCredentialPermission, ServicePermission, SocketPermission, UnresolvedPermission
-
public abstract class Permission
- extends Object
- implements Guard, Serializable
表示访问系统资源的抽象类。所有权限都有一个名称(对它们的解释依赖于子类),以及用来定义特定 Permission 子类的语义的抽象方法。
大多数 Permission 对象也包含一个 "actions" 列表,它告知此对象上允许的操作。例如,对于 java.io.FilePermission
对象,权限名称是文件(或目录)的路径名,操作列表(如 "read, write")指定授予指定文件(或指定目录下的文件)的操作。对于不需要此类列表 Permission 对象(如 java.lang.RuntimePermission
),操作列表是可选的;可以有命名的权限(如 "system.exit"),也可以没有。
每个子类都必须实现的重要方法是 implies
方法,此方法用来比较 Permission。基本上,“权限 p1”暗含“权限 p2”意味着如果授予权限 p1,则自然授予权限 p2。因此,这不是相等性测试,而是子集测试。
Permission 对象和 String 对象的相似之处在于它们一经创建便不可改变。一旦创建了权限,子类不应该提供能够更改该权限状态的方法。
- 另请参见:
-
Permissions
,PermissionCollection
, 序列化表格
构造方法摘要 | |
---|---|
Permission(String name) 构造具有指定名称的权限。 |
方法摘要 | |
---|---|
void |
checkGuard(Object object) 为某权限实现 guard 接口。 |
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 的字符串。 |
从类 java.lang.Object 继承的方法 |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
构造方法详细信息 |
---|
Permission
public Permission(String name)
-
构造具有指定名称的权限。
- 参数:
-
name
- 将创建的 Permission 对象的名称。
方法详细信息 |
---|
checkGuard
public void checkGuard(Object object) throws SecurityException
-
为某权限实现 guard 接口。调用
SecurityManager.checkPermission
方法,将此权限对象作为要检查的权限传递。如果准许访问,则正常返回。否则,抛出 SecurityException。 -
- 指定者:
-
接口
Guard
中的checkGuard
-
- 参数:
-
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
方法。 -
- 参数:
-
obj
- 要与此对象进行相等性测试的对象。 - 返回:
- 如果两个 Permission 对象等价,则返回 true。
- 另请参见:
-
Object.hashCode()
,Hashtable
hashCode
public abstract int hashCode()
-
返回此 Permission 对象的哈希码值。
Permission 对象所需的
hashCode
行为如下:- 在 Java 应用程序执行期间,无论何时在同一个 Permission 对象上调用
hashCode
方法超过一次,它都必须始终返回相同的整数。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。 - 如果根据
equals
方法,两个 Permission 对象是相等的,那么在两个 Permission 对象中的每个对象上调用hashCode
方法必须生成相同的整数结果。
- 在 Java 应用程序执行期间,无论何时在同一个 Permission 对象上调用
-
- 返回:
- 此对象的哈希码值。
- 另请参见:
-
Object.equals(java.lang.Object)
,Hashtable
getName
public final String getName()
-
返回此 Permission 的名称。例如,就
java.io.FilePermission
来说,名称将是路径名。 -
-
- 返回:
- 此 Permission 的名称。
getActions
public abstract String getActions()
-
以 String 的形式返回操作。由于此方法是抽象的,所以子类可以推迟到需要的时候才创建一个 String 的表示形式。子类应该始终以操作所认为的规范形式返回这些操作。例如,通过以下方式创建两个 FilePermission 对象:
perm1 = new FilePermission(p1,"read,write"); perm2 = new FilePermission(p2,"write,read");
当调用getActions
方法时,两者都返回 "read,write"。 -
-
- 返回:
- 此 Permission 的操作。
newPermissionCollection
public PermissionCollection newPermissionCollection()
-
对给定 Permission 对象返回空 PermissionCollection,如果没有定义则返回 null。如果 Permission 类的子类需要在一个特定的 PermissionCollection 对象中存储其权限,以便调用
PermissionCollection.implies
方法时能提供正确的语义,则它们应该重写此方法。如果返回 null,那么此方法的调用方可以在任何它们选择的 PermissionCollection(使用 Hashtable 的,使用 Vector 的,等等)中随意存储此类型的权限。 -
-
- 返回:
- 此 Permission 类型的 PermissionCollection 对象,如果都没有定义则返回 null。