如何防止其他類改變System.out?我想在App.main中設置System.out PrintStream,並使其成爲最終的,所以它不能再從App的其他部分進行更改。可能嗎?任何hacky的方式會做:)如何在運行時/啓動時禁用System.setOut和setErr?
3
A
回答
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
您可以使用您的自定義安全管理器來執行此操作。如果非自動化類使用參數「setIO」調用它,即覆蓋checkPermission();
方法,則實現您的安全管理器將拋出AccessControlException。使用new Throwable().getStackTrace()
來標識呼叫者。
相關問題
- 1. 在運行時啓用和禁用gprof?
- 2. 如何在運行或啓動時在Spring中禁用服務?
- 3. 啓用/禁用輕掃在運行時
- 4. 如何啓用和禁用listview項目運行時間?
- 5. Android信標庫:如何禁用啓動時運行
- 6. 如何在構建和運行.NET Core時禁用瀏覽器啓動
- 7. 如何使'setInterval'在啓動時運行
- 8. 如何在Windows啓動時運行XAMPP?
- 9. 如何在運行時啓動OSGI包?
- 10. 如何在啓動時運行命令?
- 11. 如何在運行時啓用/禁用縮放?
- 12. 如何在運行時啓用/禁用nhibernate逆向功能
- 13. 如何在運行時臨時禁用捆綁和縮小?
- 14. 在運行時啓動宏
- 15. 如何在運行時禁用陰影?
- 16. 如何在運行時啓用和禁用jQuery選項卡在ASP.NET中
- 17. 如何在禁用用戶屏幕時啓動啓動屏幕
- 18. 如何在啓動採用時設置運行時(echo)命令?
- 19. VBA運行代碼在啓動時和開啓時間間隔
- 20. 啓動時如何禁用窗口IE
- 21. 如何在JBOSS AS啓動時運行/啓動特定服務?
- 22. 禁用運行時
- 23. 在啓動時運行應用程序
- 24. 在啓動時運行應用程序
- 25. 如何在系統啓動時自動運行應用程序?
- 26. Install4j:如何在運行時複製和修改啓動程序
- 27. 如何禁用每次chrome重啓時運行的chrome擴展?
- 28. 運行時MTD啓動和配置
- 29. 如何防止鬧鐘在啓動時運行時間過長
- 30. 暫時在setInterval運行時禁用DIV
謝謝,好主角! – Ivarpoiss