Re[2]: вопросы новичка о языке
От: gegMOPO4  
Дата: 22.09.11 06:18
Оценка:
Здравствуйте, Blazkowicz, Вы писали:
баг>>4. Коллбэки. В C++ функторы и указатели на функции, в C# делегаты, а здесь что?
B>Анонимные классы. C# делегаты вроде просто скрывают реализию Observer. Ссылки на метод реально не хватает.

Это уж точно. Анонимные классы довольно громоздки:
myButton.addActionListener(new ActionListener()
    {
    @Override
    public void actionPerformed(ActionEvent e)
    {
        frame.toFront();
    }
});

К тому же, каждый анонимный класс — несколько сот байт кода. А их в типичной форме десятки.

В некоторых случаях помогает EventHandler. Вышеприведённые 8 строчек записываются одной. Минусы:
1) Динамика. Нет статического контроля типов, возможны банальные описки, которые отловятся только в рантайме.
2) Методы-обработчики должны быть публичными.
3) Проблема с перегрузкой.
4) Ограниченное применение — только один аргумент, нет возвращаемого значения, нет связанных переменных.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.