使用用户输入更改变量初始化值

时间:2014-11-19 08:32:34

标签: java initialization save

假设我们有一个java类,其静态整数变量初始化为零,如下所示:

public final Example {
   public static final int integer = 0;
}

这是我正在尝试做的事情:

  • 让用户输入变量的值(假设本例为5)
  • 更改源代码本身,以便现在为变量分配用户输入的值,并在下次运行程序时将其初始化为该值,如下所示:

public final Example { public static final int integer = 5; }

我想知道的是:

  • 是否可以像这样更改源代码?

  • 如果是的话,我该怎么办呢?

目的是使用Example类来存储和保存特定数量的变量,用户可以从GUI更改这些变量的初始化内容。当程序再次运行时,必须保存更改的初始化值。

我知道除了使用类文件之外,还有其他方法可以存储和保存值,但是如果可能的话,我想使用这种方法,因为我觉得这对我正在处理的特定项目最好。

感谢任何帮助,伙计们!

1 个答案:

答案 0 :(得分:1)

以持久方式存储和检索首选项的Java方式是这样的。首先,获取一个Preferences实例,并传入要与此一组首选项关联的类(使用应用程序的主类,除非您需要为应用程序的不同部分设置不同的首选项) ):

private Preferences prefs = Preferences.userNodeForPackage(MainWindow.class);

现在要使用String键检索基于someValue的值,您需要

String someValue = prefs.get("someValue", null);

最后的null是默认值:如果该密钥没有存储,那么您将获得什么。当然,您不必将默认值设为null

要存储,您可以

prefs.put("someValue", valueToStore);

这将以一种与平台无关的方式实现,并将其存储在适合您运行的系统的适当位置。

还有.putInt().getInt()等,用于存储其他类型。看起来好像int是你最需要的,但你应该知道所有这些。


但是在回答您的具体问题时,您绝对不能(自己也不应该)让用户输入自动更改下次运行的源代码!使用Preferences对象存储首选项,而不是更改源代码。

这不是迂腐。通过改变源代码来实现它将是

  1. 更脆弱;
  2. 危险;
  3. 更难编码;
  4. 维护不足;
  5. 更啰嗦;
  6. 不太便携。
  7. 此列表并非详尽无遗:)