[英]How to tell if my program is running as an Applet, or as an Java Application
我寫了一個笨重的小突破克隆,我正在寫入磁盤以保存游戲和高分。
有沒有一種簡單的方法可以檢查我的程序是作為小程序運行還是作為應用程序運行?
例如...
if(!anApplet){
//Include disk i/o features
}
我嘗試在“main”class 中設置 boolean 變量,使用 init() 將其設置為 false,在 main 方法中設置為 true,但到目前為止沒有運氣。 無論如何都會繼續嘗試,但提前感謝您的任何建議!
使用AccessController 。 您可以將所有調用包裝在AccessController.doPrivileged
塊中。
AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
// privileged code goes here, for example, read and writing files.
...
return null; // nothing to return
}
});
如有必要,您還可以在啟動時建立您的應用程序擁有的權限,並在以后使用它們:
Boolean flag = AccessController.doPrivileged(new PrivilegedAction() {
public Boolean run() {
boolean flag = false;
// privileged code goes here, for example, read and writing files. If it succeeds, set flag to true.
...
return flag; // return true, if the privileged action succeeded
}
});
我建議使用第一種方法。 如果您確實使用第二個,則將標志變量設為最終性質; 因此,您需要在存儲此標志的 class 的構造函數中執行任何“特權測試”。
附錄
如果遇到代碼片段,它們將繼續拋出AccessControlException
。 如果您想繼續處理而不妨礙用戶,那么您必須在將標志設置為 false 的同時捕獲它們。 存在AccessController.doPrivilege
塊以檢查當前堆棧幀是否存在權限。
附錄#2
不建議使用AccessController.checkPermission
,除非您可以保證存在安全管理器和適當的策略文件。 在沒有安全管理器的情況下,此方法總是會拋出一個異常進行權限檢查,這在應用程序不作為小程序運行時是不可取的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.