【问题标题】:what is the difference between static fields and non static fields in the application class (android)? [duplicate]应用程序类(android)中的静态字段和非静态字段有什么区别? [复制]
【发布时间】:2014-07-16 21:26:33
【问题描述】:

在我的 android 项目中,我有几个字段用于多个活动,因此我实现了这个类来保存它们:

public class MainApplication extends Application {
        private UserId userId; 
}

我也可以将 UserId 声明为静态:

public class MainApplication extends Application {
        private static UserId userId; 
}

这两种实现有什么区别?哪个更可取?

编辑,

我问这个问题是因为: 目前我将 userId 声明为非静态的,并且我在活动第一和第二活动中使用它。

但有时我在第二个活动中得到 NullPointerException,尽管在第一个活动中 userId 不为空。 所以我想也许如果我将它声明为静态它会解决问题吗? 谢谢你

【问题讨论】:

  • -1,显示没有研究工作
  • 不,不是重复的,这里有区别,因为我是扩展应用类,所以字段只会声明一次?
  • 没有区别。静态字段是静态字段是静态字段。 Application 类与任何其他类没有什么不同。
  • 扩展Application没关系,也可以扩展Activity或者Fragment什么的,还是一样的意思。 static 的含义不会根据您扩展的内容而改变
  • 你真的需要从java101开始,不要跳过静态字段的章节。

标签: java android singleton


【解决方案1】:

不同的是,静态成员没有实例化,可以像我们在java中的main方法一样直接使用,因为它也可以在不构造构造函数的情况下运行。声明静态意味着这个成员在内存中只有一个副本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 2016-08-20
    • 2011-07-11
    • 1970-01-01
    • 2016-10-21
    • 1970-01-01
    • 2016-08-29
    相关资源
    最近更新 更多