【问题标题】:A variable to be stored in Java permanently, access and edit it later要永久存储在 Java 中的变量,稍后访问和编辑它
【发布时间】:2018-07-13 20:08:35
【问题描述】:

假设有一个变量

int a = 10;

当我再次运行程序并访问数据时,当我以某种方式访问​​它时,它是相同的。然后我可以改变它,假设是

a = a + 6;

在那之后,除非我将其更改为其他内容,否则该值保持不变。

有没有办法做类似的事情?

注意:不要使用文件和/或外部数据库。

【问题讨论】:

  • 那么,你想拥有一个持久化的状态而不把它持久化到任何地方???
  • 不完全是,明明是要存到某个地方的,就是想存到一个看不到、看得见文件的地方。数据库需要连接和所有。那么,如果有的话,还有其他方法吗?
  • @JunaidKhan 在这种情况下,您对“看不见的地方”的定义是什么?是秘密吗?在环境变量中串起来怎么样?
  • 我是java初学者,所以我的定义是“在文件系统中看不到”,我对环境变量一无所知?用一些代码回答,如果他们能做我想做的。

标签: java scope global-variables persistent-storage


【解决方案1】:

没有。程序状态只在执行期间存在。

如果您希望它的状态在两次执行之间保持不变,您必须以某种方式将 a 的值存储在您的应用程序之外。

如果您不想使用文件或数据库,可以使用Java preferences API

你也可以use environment variables,但这很棘手。

【讨论】:

  • 你能帮忙写一些最少的代码吗?
【解决方案2】:

下载 Java 首选项 API:https://docs.oracle.com/javase/8/docs/technotes/guides/preferences/index.html

然后输入:

    import java.util.prefs.*;

    public class Example {

        public static final int a = 10;

        public void savePreference(int value) {
           Preferences prefs = Preferences.userNodeForPackage(Example.class);                
           prefs.put(a, value); 
        }

        public int readPreference() {
           Preferences prefs = Preferences.userNodeForPackage(Example.class);
           return prefs.get(a, "default");  
        }  

        public void main (String args[]){

        // Read 
        myValue = readPreferences();

        // Modify 
        myValue = myValue + 6;

        // Save
        savePreferences(myValue);            

        }

    }

希望对你有帮助

【讨论】:

  • 值怎么改?
  • 感谢“员工”。这就是我所需要的,我自己用更多的方法来帮助极端初学者回答这个问题。你也可以评价一下:D 不管怎样,很高兴知道这个:)
【解决方案3】:

对于像我这样的初学者来说,多一点。感谢Employee

import java.util.prefs.Preferences;

public class DataClass {

public void createPreference(String name, int value) {
    Preferences prefs = Preferences.userNodeForPackage(DataClass.class);
    if (prefs.getInt(name, -1) == -1) {
        prefs.putInt(name, value);
        System.out.println("Created For you, "+name+" with value: "+value);
    } else {
        System.out.println("Already Exist");
    }
}

public int readPreference(String name) {
    Preferences prefs = Preferences.userNodeForPackage(DataClass.class);
    return prefs.getInt(name, -1);
}

public void updatePreference(String name) {
    Preferences prefs = Preferences.userNodeForPackage(DataClass.class);
    int val = prefs.getInt(name, -1);
    if (val != -1) {
        val++;
        prefs.remove(name);
        prefs.putInt(name, val);
        System.out.println("New Value of "+name+" is: "+prefs.getInt(name, -1));
    }
}

public void removePreference(String key) {
    Preferences prefs = Preferences.userNodeForPackage(DataClass.class);
    if(prefs.getInt(key, -1) != -1){
        prefs.remove(key);
        System.out.println("Removed: "+key);
    }else{
        System.out.println("No Such Data in: "+key);
    }
}

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 2011-01-04
    • 2021-03-23
    相关资源
    最近更新 更多