[英]How to disable System.setOut and setErr at runtime/startup?
如何防止其他类更改System.out? 我想在App.main中设置System.out PrintStream并使其成为最终版本,因此无法再从App的其他部分进行更改。 可能吗? 任何hacky方式都会:)
我快速查看代码显示可以使用SecurityManager来防止更改。 ;)
public static void setErr(PrintStream err) {
checkIO();
setErr0(err);
}
private static void checkIO() {
SecurityManager sm = getSecurityManager();
if (sm != null) {
sm.checkPermission(new RuntimePermission("setIO"));
}
}
您可以使用Thread.currentThread()。getStackTrace()来标识调用者。
您可以使用自定义安全管理器来执行此操作。 如果非autorized类使用参数“setIO”调用它,则实现将抛出AccessControlException的安全管理器,即覆盖checkPermission();
方法。 使用new Throwable().getStackTrace()
来识别调用者。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.