例如,我有一个私有成员初始化为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