我出于兴趣研究了Android的源代码。我发现Context
是一个带有抽象方法的抽象类:
public abstract Context getApplicationContext();
ContextWrapper.java
继承自Context.java
,这导致了getApplicationContext()
方法的实现:
@Override
public Context getApplicationContext() {
return mBase.getApplicationContext();
}
但是mBase
是一个指向Context
类型对象的引用,它在ContextWrapper
的构造函数中进行初始化:
public ContextWrapper(Context base) {
mBase = base;
}
那么这个 mBase
引用是指一个 抽象类
吗?嗯,我只是不明白当你从你的 Activity
调用 getApplicationContext()
方法时执行的代码在哪里。
extends Context
,并且这就是方法实现的地方。 - Matt Ball