Permission 是 Java 中的一个权限类,用来表示对资源的访问权限。Permission 最重要的方法是 implies,方法签名如下:
public abstract boolean implies(Permission permission);
表示当前Permission对象 (this) 是否暗含了指定 Permission 对象(permission) 的权限。
Java 中给出一个经典实现:BasicPermission,它使用了传入的字符串作为权限的标志,并使用类似于相对路径的办法比较一个 Permission 是否暗含了另一个Permission 的权限。
举个例子说明其含义:
import java.security.BasicPermission;
import java.security.PermissionCollection;
public class TestBasicPermission {
public TestBasicPermission() {
// TODO Auto-generated constructor stub
}
public static void main(String[] args)
{
testPermission();
}
public static void testPermission()
{
MyPermission usaBp = new MyPermission("usa.*"); //全美国
MyPermission chinaBp = new MyPermission("china.*"); //全中国
MyPermission hubeiBp = new MyPermission("china.hubei.*"); //全湖北省
MyPermission wuhanBp = new MyPermission("china.hubei.wuhan.*"); //全武汉市
MyPermission wuchangBp = new MyPermission("china.hubei.wuhan.wuchang.*"); //全武昌区
System.out.println(chinaBp.implies(usaBp)); //false ,全美国并不暗含全中国
System.out.println(hubeiBp.implies(wuchangBp)); //true ,全湖北暗含了全武昌
System.out.println(hubeiBp.implies(chinaBp)); //false ,全湖北并不暗含全中国
PermissionCollection bpc = usaBp.newPermissionCollection();
bpc.add(chinaBp);
System.out.println(bpc.implies(hubeiBp)); //true , (全美国 | 全中国)暗含了全湖北
}
}
//BasicPermission 是个虚类不能直接使用,故要先派生出一个具现类
class MyPermission extends BasicPermission
{
public MyPermission(String name) {
super(name);
// TODO Auto-generated constructor stub
}
private static final long serialVersionUID = 1L;
}