【问题标题】:Using a class to store static data in Java?使用类在 Java 中存储静态数据?
【发布时间】:2012-08-22 21:16:02
【问题描述】:

创建一个单独的类并将其用作仅包含静态数据变量的存储是不是一个坏主意?

我目前正在为 android 开发一个应用程序,但这个问题对于 Java 来说是一般性的。

对于 android,我正在跨活动移动,我想将一些全局/静态标志/变量存储在该单独的类中,并能够从我想要的任何活动中访问它们。

附言。仅会话时间需要数据。

【问题讨论】:

  • 对于您的应用程序的整个生命周期,这是一个不错的决定。对于长寿命存储,请使用 sharedpreferences 或 sqlite。

标签: java android


【解决方案1】:

嗯,这不是一个坏主意。您可以在 Android 中使用这种类型的类。但这里有一个小的修正。您可以使该类扩展 Application 类并使用它来存储数据,而不是维护一个包含静态数据的类。

这是一个例子,

public class HelloApplication extends Application {
        private int globalVariable=1;

        public int getGlobalVariable() {
                return globalVariable;
        }

        public void setGlobalVariable(int globalVariable) {
                this.globalVariable = globalVariable;
        }
        @Override
        public void onCreate() {
                //reinitialize variable
        }
}

在你的活动中,这样做,

(HelloApplication)getApplication()).setGlobalVariable(10);
int valiable=((HelloApplication)getApplication()).getGlobalVariable();

Taken from here..

说到 SharedPreference,你应该考虑只在值需要长时间存储时才使用它们。如果没有,您应该使用 Application 类并使用 setter 和 getter,这是执行此操作的合法方法。

【讨论】:

  • 我认为一个问题是每次您想要访问或修改变量时都必须进行强制转换。使用带有静态方法/变量的静态类可以节省多次强制转换以及进程和内存,不是吗?
  • 如果我们单独存储被转换的对象并一直使用它,则不必每次都进行转换..
  • 这是个好主意,但我相信每次添加新变量时创建 setter 和 getter 都很麻烦。但是,我必须看看使用应用程序扩展的优势。
【解决方案2】:

您可以使用 SharedPreference 来存储标志和变量。

看看这个Preference Demo

【讨论】:

  • 我只在会话时间内需要它,并且我希望在每次新应用启动时重置设置。
【解决方案3】:

建议你使用Application类,而不是创建一个静态类来保存全局变量。

见链接:

Android global variable

【讨论】:

    【解决方案4】:

    使用 SharedPreference 来存储标志和变量

    http://developer.android.com/reference/android/content/SharedPreferences.html

    对于全局变量:

    最好使用 Android Application 类。它旨在存储全局应用程序状态

    【讨论】:

      【解决方案5】:

      我建议“从不”使用全局变量....

      当您访问另一个活动时,您可以使用 Intent.putExtras(Name_parameter, "value_parameter") 抛出一些值

      并接收值:Bundle b = getIntent().getExtras(); 其中 b 具有所有参数

      干杯,

      【讨论】:

      • 问题不在于将数据从一个活动传递到另一个活动,而在于从代码中的任何地方访问任何性质的数据。
      • 此外,我的意思是在 Java 中提到 Android 只是作为一个例子。
      【解决方案6】:

      好吧!据我所知,这可能取决于您项目的规模!如果它相对较大,最好使用单独的类来存储静态数据(不仅仅是一个类,您可能需要保留两个或更多类,具体取决于所使用的静态数据的类型)

      【讨论】:

        【解决方案7】:

        我建议你应该用 Singleton 类封装你的全局类。更多信息请访问 Singleton Design Pattern

        【讨论】:

          猜你喜欢
          • 2016-03-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-22
          • 2011-10-03
          • 1970-01-01
          相关资源
          最近更新 更多