因此,我的Java应用程序中的常量将由用户更改,因为它们指定了本地数据库要求(用户名,密码,端口号等)。现在我应该将它们保存在我的主类中,并指定用户必须在此类中更改以下变量。或者我应该在我的主类将实现的接口中定义它们?或者更好的建议?
编辑:哎呀我意识到我使用了不正确的术语。我应该使用设置变量。
答案 0 :(得分:2)
在程序执行期间保持不变但可以更改的值称为设置或首选项。 Java提供preferences API,可用于此目的。
以下是使用此API检索用户首选项的示例:
Preferences prefs = Preferences.userRoot().node(this.getClass().getName());
String userName = prefs.get("userName");
String encryptedPassword = prefs.get("encryptedPassword");
答案 1 :(得分:2)
我想我明白你打算做什么。许多人所做的是创建一个由java程序读入的属性文件,该文件将这些变量视为不变的值。
这使用户可以在执行前更改配置文件,并允许程序将这些变量视为不变。我不确定我会让它们保持不变,但它们可以被视为不变的值。
http://javarevisited.blogspot.com/2012/03/how-to-read-properties-file-in-java-xml.html
答案 2 :(得分:0)
我认为这些变量的位置取决于您选择如何实施程序设计。学习什么时候创建一个单独的课程是有必要的,所以如果你一开始不理解,不要感到沮丧。如果你的主要课程变得冗长而复杂,那么这就是将时间分成不同类的时候的一个例子。
您可能会发现这些链接有助于决定何时适合创建单独的类:
http://stackoverflow.com/questions/18806699/when-to-create-helper-methods-and-separate-files
如果您尝试更永久地保存变量(即通过设备重启,通过设备电源关闭),您可以使用首选项。使用String,char,int等替换下面这些方法中的dataType。
//save prefs
public void savePrefs(dataType key, dataType value){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putDataType(key, value);
editor.commit();
}
//get prefs
private String LoadPreferences(dataType key, dataType value){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
DataType data = sharedPreferences.getDataType (key, value);
return data;
}
答案 3 :(得分:0)
我们在当前项目中使用Excel工作表来映射属性及其值。用户可以根据需要修改excel表并将其发送给我们。
我们从excel数据生成XML。我们已经创建了一个配置'我们上传XML的页面。我们编写了一个程序,每30分钟运行一次,检查XML中的数据是否发生了变化。不是最好的做事方式,但它适用于我们,因为我们的应用程序中有很多属性,我们需要根据业务需求不断更改。