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
广告