java - 实例化对象

标签 java android

在 java 中,我了解到我使用 new 关键字来实例化一个对象,例如

 Employee e = new Employee();

在 android 中,通过开发者页面,上下文对象被实例化,而不使用像这样的 new 关键字:

Context myContext = getApplicationContext();

这是为什么?我应该认为应该使用像这样的 new 关键字以相同的方式创建上下文对象:

Context myContext = new Context();

我想有人可能会回答说 getApplicationContext() 方法返回一个上下文类型的对象,因此返回上面的语法,但是有人有更深入的解释为什么这样做而不是简单地 这样做

Context myContext = new Context();

最佳答案

因为有时您根本不想/不需要每次都创建一个新实例,有时您只是想获取该对象而无需自己实际处理它的创建。

例如,有一个Singleton design pattern在其通用实现中,由于构造函数是私有(private)的,因此无法使用 new 关键字创建新实例。所以剩下要做的就是通过调用静态方法获取类的实例:

public class MySingleton {
    private MySingleton() { }

    public static MySingleton getInstance() { ... }
}

有时您可能想使用 Factory method pattern ,它也处理新对象的创建/实例化:您调用一个方法并为您返回一个新的或现有的对象,而无需显式调用构造函数。

如果是Context,你不需要创建这个对象,因为系统会为你处理它,而且这个过程是透明的。你只需要调用一个方法,你就有了你的实例。

关于java - 实例化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37521411/

相关文章:

Java api - 以 _ [下划线] 开头的类名

java - Android蓝牙实时数据流慢

android - 带有自定义子项的可扩展 ListView

android - 字符串到日期时间的转换 : Android

android - 在 TextEdit 中设置提示的字体

java - 如何在 javafx 中加载 tmx/xml 文件?

java - 小部件 Onclick 不起作用

java - 企业应用程序与普通应用程序

Android - 如何仅向背景图像添加动画(放大)而不影响其他图像?

android - 如何将 Context 实例注入(inject)类型转换器?