在Java中存储将由应用程序的用户更改的常量的位置?

时间:2015-08-05 00:12:35

标签: java constants

因此,我的Java应用程序中的常量将由用户更改,因为它们指定了本地数据库要求(用户名,密码,端口号等)。现在我应该将它们保存在我的主类中,并指定用户必须在此类中更改以下变量。或者我应该在我的主类将实现的接口中定义它们?或者更好的建议?

编辑:哎呀我意识到我使用了不正确的术语。我应该使用设置变量。

4 个答案:

答案 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

Android XML layout constants

答案 2 :(得分:0)

我认为这些变量的位置取决于您选择如何实施程序设计。学习什么时候创建一个单独的课程是有必要的,所以如果你一开始不理解,不要感到沮丧。如果你的主要课程变得冗长而复杂,那么这就是将时间分成不同类的时候的一个例子。

您可能会发现这些链接有助于决定何时适合创建单独的类:

http://stackoverflow.com/questions/18806699/when-to-create-helper-methods-and-separate-files

https://softwareengineering.stackexchange.com/questions/154228/why-is-it-good-to-split-a-program-into-multiple-classes

如果您尝试更永久地保存变量(即通过设备重启,通过设备电源关闭),您可以使用首选项。使用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中的数据是否发生了变化。不是最好的做事方式,但它适用于我们,因为我们的应用程序中有很多属性,我们需要根据业务需求不断更改。