2011-09-12 82 views

回答

4

我快速看看代碼顯示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()來標識調用者。

+0

謝謝,好主角! – Ivarpoiss

0

您可以使用您的自定義安全管理器來執行此操作。如果非自動化類使用參數「setIO」調用它,即覆蓋checkPermission();方法,則實現您的安全管理器將拋出AccessControlException。使用new Throwable().getStackTrace()來標識呼叫者。