Я смотрел в 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 относится к классу abstract?
Ну, я просто не понимаю, где код, который выполняется, когда вы вызываете getApplicationContext() из вашего Activity.