Java SecurityManager checkTopLevelWindow() 方法



描述

Java SecurityManager checkTopLevelWindow(Object window) 方法如果呼叫執行緒不被信任來顯示由 window 引數指示的頂級視窗,則返回 false。在這種情況下,呼叫者仍然可以決定顯示視窗,但視窗應包含某種視覺警告。如果該方法返回 true,則可以無任何特殊限制地顯示視窗。

有關受信任和不受信任視窗的更多資訊,請參見 Window 類。此方法使用 AWTPermission("showWindowWithoutWarningBanner") 許可權呼叫 checkPermission,如果未丟擲 SecurityException,則返回 true,否則返回 false。

如果覆蓋此方法,則應在覆蓋方法通常返回 false 的位置呼叫 super.checkTopLevelWindow,並返回 super.checkTopLevelWindow 的值。

宣告

以下是java.lang.SecurityManager.checkTopLevelWindow() 方法的宣告

public boolean checkTopLevelWindow(Object window)

引數

window − 正在建立的新視窗。

返回值

如果呼叫執行緒被信任來顯示頂級視窗,則此方法返回 true;否則返回 false

異常

NullPointerException − 如果 window 引數為 null。

示例

我們的示例要求阻止每個命令的許可權。設定了一個新的策略檔案,該檔案只允許建立和設定我們的 Security Manager。該檔案位於 C:/java.policy,幷包含以下文字:

grant {
  permission java.lang.RuntimePermission "setSecurityManager";
  permission java.lang.RuntimePermission "createSecurityManager";
  permission java.lang.RuntimePermission "usePolicy";
};

以下示例顯示了 lang.SecurityManager.checkTopLevelWindow() 方法的用法。

package com.tutorialspoint;

public class SecurityManagerDemo extends SecurityManager {

   public static void main(String[] args) {

      // set the policy file as the system securuty policy
      System.setProperty("java.security.policy", "file:/C:/java.policy");

      // create a security manager
      SecurityManagerDemo sm = new SecurityManagerDemo();

      // set the system security manager
      System.setSecurityManager(sm);

      // check the top level window
      boolean checked = sm.checkTopLevelWindow("Window");
      System.out.println("" + checked);
   }
}

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

Exception in thread "main" java.lang.UnsupportedOperationException: The Security Manager is deprecated and will be removed in a future release
	at java.base/java.lang.System.setSecurityManager(System.java:430)
	at com.tutorialspoint.SecurityManagerDemo.main(SecurityManagerDemo.java:14)

注意 − Security Manager 自 17 版起已棄用,並標記為要移除。

java_lang_securitymanager.htm
廣告
© . All rights reserved.