例如,我有一個私有成員初始化爲String str =「A」。程序結束後,我希望成爲「B」。然後,第二天當我運行同一個程序時,str的值是「B」,而不是「A」。如何更新變量並使其在Java中保持持久性?
謝謝。
例如,我有一個私有成員初始化爲String str =「A」。程序結束後,我希望成爲「B」。然後,第二天當我運行同一個程序時,str的值是「B」,而不是「A」。如何更新變量並使其在Java中保持持久性?
謝謝。
您需要將數據寫入持久存儲位置,例如數據庫或磁盤上的文件。
是的,我可以把它寫入一個文件,但是至今。它是一個非常小的數據,我想知道是否有任何方法可以避免這種情況 – user697911 2013-03-21 02:58:42
@ user697911程序不會停止執行(一個壞主意 - 如果你的計算機崩潰怎麼辦?)或者它將數據寫入文件或數據庫。您的選擇;) – Patashu 2013-03-21 02:59:54
@ user697911:您可能想要使用屬性文件。 – SLaks 2013-03-21 03:00:30
(在SLaks上進行擴展應答) - 如果要在執行過程中保存程序中的任何信息,則需要將該信息存儲在程序外部的某個位置。這可以是一個數據庫(通常用於大型/複雜程序)或文件(用於小型程序)或任何介於兩者之間的任何內容(非現場雲存儲等)。在「保存文檔」的任何桌面應用程序中都使用了相同的概念 - 它基本上保存在可以通過程序重新加載的文件中。
Java中的一個簡單示例是使用屬性文件 - this question給出瞭如何將信息寫入屬性文件的示例 - 您可以在下次啓動應用程序時使用相關的API讀取這些屬性。
如果你更冒險,Java中有several frameworks提供持久性功能,但這聽起來像是比你在你的應用程序中尋找更復雜。
請您詳細介紹一下「我運行同一程序的第二天,str的值是」B「,而不是」A「。urs程序駐留在哪裏?您是否通過啓動服務器再次啓動程序? At下面的代碼 進口java.lang.reflect.Field中的程序調用的最後一個出口點;?!
public class Reflection {
String str = "A";
void test(){
Class test= Reflection.class;
try {
Field aa= test.getDeclaredField("str");
aa.setAccessible(true);
try {
aa.set(this, "B");
System.out.println(str);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
Reflection test=new Reflection();
test.test();
}
}
第二天聽起來像你講一個故事 – Raptor 2013-03-21 06:08:11