Java声明持久化静态变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java声明持久化静态变量相关的知识,希望对你有一定的参考价值。

我有一个课程,我需要在其中创建一个独特的计数器,类似于:

public class Foo {
    private static int FOO_COUNT = 0

    public static getNextCount(){
        return ++FOO_COUNT;
    }
    //... more methods...
}

计数器值必须在Java VM重新启动,应用程序重新部署等之间保持不变,以便在整个应用程序生命周期中提供连续计数器。

如何(以及如果)可以实现(最好不使用DB或类似的持久性机制)?

答案

您需要序列化您的对象,然后您可以像以下一样保存它:例如:

  import java.io.*;
    public class SerializeDemo {

       public static void main(String [] args) {
          private static int FOO_COUNT = 0;

          try {
             FileOutputStream fileOut =
             new FileOutputStream("/tmp/save.ser");
             ObjectOutputStream out = new ObjectOutputStream(fileOut);
             out.writeObject(FOO_COUNT);
             out.close();
             fileOut.close();
             System.out.printf("Serialized data is saved in /tmp/save.ser");
          } catch (IOException i) {
             i.printStackTrace();
          }
       }
    }


    public class Foo  implements java.io.Serializable  {
        private static int FOO_COUNT = 0

        public static getNextCount(){
            return ++FOO_COUNT;
        }
        //... more methods...
    }

以上是关于Java声明持久化静态变量的主要内容,如果未能解决你的问题,请参考以下文章

java类的加载顺序,静态块 非静态块 构造器属性方法等

Java static 关键字

java 13.静态类成员

我可以在Java中的静态成员函数中声明一个静态变量吗?

08 java代码块的概述和分类

Java从不在方法中声明变量的访问级别,无论是不是是静态的[关闭]