LINUX.ORG.RU

композиция в java


0

0

Я вот тут недавно обнаружил, что при композиции классов в java внутренний класс может вызывать вункции внешнего без всяких проблем, например кусок из андроида:

public class ManageApplications extends ... {
  private class PackageIntentReceiver extends BroadcastReceiver {
    void registerReceiver() {
       ...
       ManageApplications.this.registerReceiver(this, filter);
    }
    public void onReceive(Context context, Intent intent) {
       ...
       updatePackageList(actionStr, pkgName);
    }
  private void updatePackageList(String actionStr, String pkgName) {
    ...
  }

А где это описано? На сколько я помню в плюсах так нельзя делать.

★★

На всякий случай напомню, что избавиться от этого можно с помощью static class Classname { ...

runtime ★★★★
()
Ответ на: комментарий от qnikst

фишка не static inner class-а в том, что в него неявно передаётся ссылка на экземпляр outer класса, и используется в дальнейшем. При желании можно это делать вручную.

Legioner ★★★★★
()
Ответ на: комментарий от Sectoid

в шарпе же нет ссылки на породивший объект, в отличии от жавы

anonymous
()

>>А где это описано?

В любой нормальной книжке и спеке ;)

alex_custov ★★★★★
()
Ответ на: комментарий от Legioner

ну.. с тем же успехом можно её добавить в любой другой объект в том же packag'e.

qnikst ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.