在 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/