BlackBerry - веселье с полевыми менеджерами

Я пытаюсь сделать класс View, который обеспечивает горизонтальный или вертикальный макет в зависимости от того, как он создается. Я использую делегата для достижения этой цели.

class View extends Manager {
    private Manager mDelegate;

    public View(Manager inDelegate) {
        mDelegate = inDelegate;
        // the delegate is the only child of "this" manager.
        super.add(mDelegate);
    }

    public void add(Field f) {
        // all other children go into the delegate.    
        mDelegate.add(f);
    }

    // other methods that also delegate

}

Когда я создаю экземпляр объекта View, я передаю горизонтальный или вертикальный менеджер полей, а затем делегирую вызовы этому. Это то, что класс Screen делает в blackberry.

На самом деле, я просматриваю документы Blackberry для Screen, чтобы увидеть, какие вызовы он делегирует (так что я могу подражать этому), и я замечаю такие вызовы в Screen ...

защищенный логический ключ keyChar (char c, int status, int time)

Делегирует событие генерации ключа в контролируемое поле с фокусом. Этот метод вызывает Manager.keyChar (char, int, int) в диспетчере делегатов этого экрана.

И тут меня сразу осенило, как в мире они вызывают защищенный метод у делегата экрана? Или документы не так, и этот метод не делегирован?

Кто-нибудь знает, как они этого добиваются?

Ответы на вопрос(2)

Ваш ответ на вопрос