JavaTM 2 Platform
Standard Ed. 6

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 方法。

覆寫:
類別 Object 中的 equals
參數:
obj - 要與此物件進行相等性測試的物件。
返回:
如果兩個 Permission 物件等價,則返回 true。
另請參見:
Object.hashCode(), Hashtable

hashCode

public abstract int hashCode()
返回此 Permission 物件的雜湊碼值。

Permission 物件所需的 hashCode 行為如下:

覆寫:
類別 Object 中的 hashCode
返回:
此物件的雜湊碼值。
另請參見:
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。

toString

public String toString()
返回描述此 Permission 的字元串。約定是指定類別名稱、權限名稱和以下格式的操作:'("ClassName" "name" "actions")'。

覆寫:
類別 Object 中的 toString
返回:
關於此 Permission 的資訊。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only