1.將你這段字符串輸出到一個文件里,用Java類文件的方式命名。
創(chuàng)新互聯(lián)主要從事成都網(wǎng)站建設、成都做網(wǎng)站、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務多倫,10余年網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:028-86922220
2.調用外部javac命令將該文件編譯。
3.用類加載器(ClassLoad)動態(tài)加載新的class文件并用Class.forName()注冊該類,然后就可以正常使用了。
上面的每一步都能在baidu中找到實現(xiàn)方法,自己發(fā)揮吧。
分析文本內容然后重新加載.
我覺得是不是你保存的內容不夠詳細,所以分析起來就特別耗時,
比如地圖上的有幾個地雷的數(shù)字, 就可以先存起來
假設
已經(jīng)打開的安全區(qū)域, 并且該按鈕不用顯示數(shù)字, 那么設置成 0
已經(jīng)打開的安全區(qū)域,但按鈕上需要顯示數(shù)字,那么數(shù)字是幾,那么設置成幾
--1
--2
......
[沒有標記]
沒有打開的區(qū)域, 且上面沒有點上地雷標記,且不是地雷的,那么數(shù)字可以設置成A
沒有打開的區(qū)域, 且上面沒有點上地雷標記,但是是地雷的,那么數(shù)字可以設置成B
[有標記]
沒有打開的區(qū)域,有地雷標記, 且真的下面有地雷的,那么數(shù)字設置成C
沒有打開的區(qū)域, 有地雷標記,但下面沒有地雷的,那么數(shù)字設置成D
那么地圖文件,可能存儲的信息如下. (假設的,沒有去推理過的)
02DCBA4AA1100
00123DBCDAB10
.....
這思路和RPG的游戲地圖保存是這樣的,
RPG地圖劃分出一個一個的格子來顯示,所以保存的時候,保存每一個格子的數(shù)據(jù)就可以了,
沒有設置ABC... 而全部使用數(shù)字, 0~N
比如
保存是數(shù)據(jù)如下: ? 行標,和每一行的數(shù)據(jù)
[0]=[12,89,101]
[1]=[13,72,12]
[2]=[3,10,56]
Java類的加載是動態(tài)的,它并不會一次性將所有類全部加載后再運行,而是保證程序運行的基礎類(像是基類)完全加載到jvm中,至于其他類,則在需要的時候才加載。這當然就是為了節(jié)省內存開銷。
Java的類加載器有三個,對應Java的三種類:
Bootstrap Loader // 負責加載系統(tǒng)類 (指的是內置類,像是String,對應于C#中的System類和C/C++標準庫中的類)
|
- - ExtClassLoader // 負責加載擴展類(就是繼承類和實現(xiàn)類)
|
- - AppClassLoader // 負責加載應用類(程序員自定義的類)
三個加載器各自完成自己的工作,但它們是如何協(xié)調工作呢?哪一個類該由哪個類加載器完成呢?為了解決這個問題,Java采用了委托模型機制。
委托模型機制的工作原理很簡單:當類加載器需要加載類的時候,先請示其Parent(即上一層加載器)在其搜索路徑載入,如果找不到,才在自己的搜索路徑搜索該類。這樣的順序其實就是加載器層次上自頂而下的搜索,因為加載器必須保證基礎類的加載。之所以是這種機制,還有一個安全上的考慮:如果某人將一個惡意的基礎類加載到jvm,委托模型機制會搜索其父類加載器,顯然是不可能找到的,自然就不會將該類加載進來。
我們可以通過這樣的代碼來獲取類加載器:
ClassLoader loader = ClassName.class.getClassLoader();
ClassLoader ParentLoader = loader.getParent();
注意一個很重要的問題,就是Java在邏輯上并不存在BootstrapKLoader的實體!因為它是用C++編寫的,所以打印其內容將會得到null。
前面是對類加載器的簡單介紹,它的原理機制非常簡單,就是下面幾個步驟:
1.裝載:查找和導入class文件;
2.連接:
(1)檢查:檢查載入的class文件數(shù)據(jù)的正確性;
(2)準備:為類的靜態(tài)變量分配存儲空間;
(3)解析:將符號引用轉換成直接引用(這一步是可選的)
3.初始化:初始化靜態(tài)變量,靜態(tài)代碼塊。
這樣的過程在程序調用類的靜態(tài)成員的時候開始執(zhí)行,所以靜態(tài)方法main()才會成為一般程序的入口方法。類的構造器也會引發(fā)該動作。
如果只是程序更改值的請使用,prop.setProperty("ss", "123"); 。如果是人為修改 .properties 文件的值 。關閉上次,讀取流 。
Properties prop = new Properties();
FileReader in = new FileReader("ss.properties");
prop.load(in);
in.close();
你的是javaEE 的項目,可以 監(jiān)聽器試試吧 !
大兄弟,我這兒有一個,你參考一下,但是輸出流問題,沒有得到解決。因為src在項目布置到tomcat上會消失的,所以你看看能不能解決?
樓上不懂就不要亂說。 這個需要更改tomcat的開發(fā)模式的
要設置server.xml中的Context reloadable="true", true自動重載(不是重啟!), false手動重載。(如果項目在Tomcat中,應該去Tomcat目錄設置。)